Setting Up Scales in details

 

Royalty scales are a smart way to implement variable royalties based on sales units or turnover of specified products. Essentially, you set different thresholds (or scales), and when sales hit those marks, different royalty rates kick in.

In details, you have the flexibility to set up scales based on either the number of units sold (Quantity Scales) or the revenue generated (Turnover Scales).

These scales allow you to tailor royalty rates to different levels of sales or earnings, providing a dynamic way to account based on sales performances.


Key Guidelines

When setting up Quantity or Turnover Scales in our application, there are four essential rules you should follow:

1. Include Previous Sales in the Base Amount:
If there were any sales before implementing the scales, make sure to include those quantities in the Base Amount field.

2. Start from the First Threshold:
Up until the first threshold, the standard royalty rate (as specified in the royalty rates box) applies. You don t start at zero; instead, you begin at the first quantity threshold where a new rate needs to be applied.

3. Set the First Unit for Each New Scale:
For subsequent scales, always enter the first unit of the new scale where a new rate should be applied.

4. Enter Additional Rates:
In the scale rates field, input the rates that should be added to the base royalty rate (without the scale). These rates are not cumulative but should be set as an addition to the base rate.


5. Enter Turnover Thresholds correctly:

It s important to note that these thresholds are based on turnover, not royalties.
A threshold will be reached when the revenue calculated as base for the royalty calculation multiplied with the contract items shares reaches the indicated turnover.

 

Quantity Scales (for Physical Products)

Quantity Scales are ideal for physical products where royalties are typically based on the number of units sold. This setup allows you to create multiple thresholds, each with its own royalty rate, which adjusts as sales volumes increase.

Let’s say you want to set this Example for an album CD (excluding Vinyl)

” Threshold 1: 0 – 1.000 units = 5% royalty
” Threshold 2: 1.001 – 5.000 units = 8% royalty
” Threshold 3: Over 5.000 units = 10% royalty

 

How to Set Up Quantity Scales in details

1. Define the Scale Thresholds:
Start by determining the tipping points that will trigger different royalty rates.

Example:

” Base Rate : 0 – 1.000 units
” Scale 1: 1.001 – 5.000 units
” Scale 2: 5.001 units and more



2. Assign Royalty Rates:

Once you ve determined your tipping points, assign a royalty rate to each scale. Remember, the first level uses your base royalty rate from the Royalty Rates section, and any additional percentages should be added on top of this base rate.

For example, if your base royalty rate is 5%, you might set the rate to 8% for sales above 1,001 units and 10% for sales over 5,001 units. This means the additional royalty would be the base rate 5% + 3% for the first scale and the base rate 5% + 5% for the second scale.


3. Adjust the Base Quantity:
This example assumes there were no previous sales. However, if you had sales before using the Details application, you need to include those quantities as the Base Quantity. This ensures that your previous sales are factored into the scale calculation.

If the Base Quantity field is left empty, the Details application will only calculate based on sales imports and orders recorded within the application itself.


4. Select the Relevant Products

Finally, make sure to select the products that should be included in the scale calculation.
Keep in mind that if you don t select the related products, the scales won t be applied, as the system won t know which sales to include in the calculation

 

 

Turnover Scales (for Digital and Physical Products)

Turnover Scales are more used for digital products or mixed scales of digital and physical products, where royalties are based on the revenue generated rather than the number of units sold.
Unlike Quantity Scales, you can only set up one Turnover Scale per contract, but it can be just as flexible and effective.

How to Set Up Turnover Scales

1. Determine the Turnover Thresholds:

Identify the revenue benchmarks that will trigger different royalty rates. These thresholds are based on overall cumulative revenue over time, rather than revenue within a specific period.

It s important to note that these thresholds are based on turnover, not royalties.
In other words, you re calculating thresholds based on the revenue used as the base for royalty calculation, such as net revenue, fixed price, or another selected royalty base not on the royalties earned themselves!

Also note: The turnover scale calculation takes contract shares into account.
For example, if your contract represents a 50% item share, it would require 2,000/ in total turnover to reach a 1,000/ threshold on your scale!

2. Assign Royalty Rates:

Just like with Quantity Scales, you ll assign additional royalty rates to each revenue threshold.
For instance, if for digital sales you want to set a 10% royalty for revenue up to $50,000, 12% for revenue between $50,001 and $100,000, and 15% for revenue over $100,000, this – in details logic translates into a base royalty plus two scales :

” Base Royalty = 10%
” Scale 1 : $50.001 = 10% + 2% additional royalty
” Scale 2: $100.001 = 10% + 5% additional royalty

Note: If you include physical products in the Turnover scale and those physical sales have a different royalty rate, details will calculate the additional rates proportionally to the base rates for each channel!
For example, if your digital sales have a base rate of 10%, the rates might be 10% + 2% or 10% + 5%. For physical sales with a base rate of 15%, the corresponding rates would be 15% + 2% or 15% + 5%.



Considerations on Base Royalty Rates :

When we talk about Turnover in the context of Turnover Scales, it s important to understand that this term does not have a universal definition across all contracts. The turnover figure used in your scale calculations can vary significantly depending on how it s defined in the base settings in your contract.

The actual turnover could be based on net income, which accounts for the revenue after all applicable deductions like discounts or returns. Alternatively, it might be based on PPD (Published Price to Dealer) income, which can either be imported or be fixed in the products as price, multiplied by the units sold. Another possibility is that turnover is calculated using fixed prices multiplied by the number of units sold, offering a straightforward approach where each unit sold contributes a set amount to the total turnover.

For this reason, the specific definition of turnover in your contract determines the basis on which royalties are calculated. This means that the turnover you use in your scales isn t just a generic revenue figure but one that s deeply tied to the contractual royalty base, whether that be net income, PPD income, a fixed price or any other another base.

 

Summary

Here s a summary of the most important points to remember about how to handle Scales in details:

1. Threshold Settings:
The amounts entered in the scale fields should align with the lower limit of the thresholds. Additionally, the rate percentages should be considered as increments added or deducted to the base royalty rates specific to each channel.

3. Turnover vs. Royalties:
It s crucial to understand that in details the turnover is the starting point for determining royalties, not the result of past royalty calculations. In other words, the set thresholds are earnings, not royalties!

2. Turnover Calculation:
The turnover within a scale is directly influenced by the selected royalty base:
Net Revenue: Turnover equals the net revenue received.
PPD: Turnover is determined by multiplying the number of units sold by the PPD (imported or Product PPD).
Fixed Price: Turnover is calculated by multiplying the quantity sold by the fixed price per unit.


How to format and translate dates in booking templates

In details, dates are shown in the format yyyy-mm-dd, for example: 2016-11-08. This format is used across the platform to keep things consistent and easy to read.

In your Booking Templates, for example in contracts, itineraries or tourbooks, you can customize how dates are displayed. You can show only the day, the full month name, the weekday in different languages, or combine multiple elements.

For general information on how dates are displayed in details, see our Date Format Policy.


Booking Start Date

  • [% ph.date_start %] ► Mon 2016-11-08
  • [% ph.startdate_dd %] ► 08
  • [% ph.startdate_mm %] ► 11
  • [% ph.startdate_yyyy %] ► 2016

Day of the Week (localized)

  • [% ph.startdate_day("en") %] ► Monday
  • [% ph.startdate_day("de") %] ► Montag
  • [% ph.startdate_day("fr") %] ► Lundi
  • [% ph.startdate_day("es") %] ► Lunes
  • [% ph.startdate_day("pt") %] ► Segunda-Feira

Month Name (localized)

  • [% ph.startdate_month("en") %] ► November
  • [% ph.startdate_month("de") %] ► November
  • [% ph.startdate_month("fr") %] ► Novembre
  • [% ph.startdate_month("es") %] ► Noviembre
  • [% ph.startdate_month("pt") %] ► Novembro

Document Creation Date

  • [% ph.print_date %] ► 2016-11-08
  • [% ph.printdate_dd %] ► 08
  • [% ph.printdate_mm %] ► 11
  • [% ph.printdate_yyyy %] ► 2016

Month Name (localized)

  • [% ph.printdate_mm("en") %] ► November
  • [% ph.printdate_mm("de") %] ► November
  • [% ph.printdate_mm("fr") %] ► Novembre
  • [% ph.printdate_mm("es") %] ► Noviembre
  • [% ph.printdate_mm("pt") %] ► Novembro

Hotel & Due Date Variables

We also have variables for Hotel start and end dates when needed.

There are also variables for due dates of artist and booking fees.


Date Calculation Example

You can calculate dates depending on another date in your template. Here’s an example that adds 1 day to the event date:

[% USE date; %]
[% new_startdate = date.calc.Add_Delta_Days( ph.startdate_yyyy, ph.startdate_mm, ph.startdate_dd, 1) %]
[% new_startdate.2 %].[% new_startdate.1 %].[% new_startdate.0 %]

Or format a date +2 days in a readable form like Fri 23. April 2017:

[% USE date; %]
[% startdate_plus2 = date.calc.Add_Delta_Days( ph.startdate_yyyy, ph.startdate_mm, ph.startdate_dd, 2) %]
[% date.format( startdate_plus2, '%a') %], [% startdate_plus2.2 %]. [% date.format( startdate_plus2, '%B') %] [% startdate_plus2.0 %]

Alternatively:

[% USE date; date.format( startdate_plus2, '%a, %Y-%m-%d') %]

Date Format Tokens

You can format any calculated or static date using the following tokens:

  • %a ► Day name (Mon)
  • %Y ► Full year (2024)
  • %y ► Short year (24)
  • %m ► Month number (01–12)
  • %b ► Short month (Nov)
  • %B ► Full month name (November)
  • %d ► Day of month (01–31)
  • %H ► Hour
  • %M ► Minute
  • %s ► Second

Invoice Date Formatting

For INVOICES, it is also possible to customize the invoice date format displayed in specific languages.

Please let us know which formats you’d like per language. This would be custom programmed and billed at the standard rate.

How to Create Custom Release Infosheets

details lets you publish all relevant RELEASE and PRODUCT information in fully customizable documents. These are commonly called Infosheets, One-Sheets, or Product Infos.

To print Infosheets from details, you need a custom HTML template.
Our team can create this for you, or any HTML designer can adapt your current layout.

Templates are fully customizable.




Once a template is available, open the Infosheet here: LABEL / CATALOG / RELEASES / SELECTED RELEASE / OVERVIEW / [DOCUMENTS]

 

Required Datapoints

Make sure the relevant datapoints are filled at the appropriate levels so your Infosheet is fully populated.

RELEASE Datapoints

RELEASE Datapoints References

RELEASE Infos
Artist: [% release.release_artist %]
Title: [% release.release_title %]
Release Date: [% release.release_date %]
Label: [% release.label_name %]
LC Code: [% release.label_code %]
Genre: [% release.genre_name %]
Artwork 1: [% release.artwork1_link %]
Artwork 2: [% release.artwork2_link %]
Infotext EN: [% release.release_info_english | html | html_line_break %]
Infotext 2nd: [% release.release_info_second | html | html_line_break %]
Notes: [% release.notes %]
Identifier: [% release.identifier %]

PRODUCT Datapoints

PRODUCT Datapoints References

PRODUCT Infos
Catalog No: [% release.products.catalog_no %]
Format: [% release.products.format_name %]
UPC / Barcode: [% release.products.barcode %]
Retail Price: [% release.products.ppd %]
Release Shift: [% release.products.release_shift %]
Attribute 1: [% release.products.attribute1 %]
Attribute 2: [% release.products.attribute2 %]
Attribute 3: [% release.products.attribute3 %]
Weight: [% release.products.weight %]
Notes: [% release.products.notes %]
Digital / Physical: [% release.products.digital_physical %]

TRACK Datapoints

TRACK Datapoints References

TRACK Infos
Set No: [% product.tracks.set_no %]
Track No: [% product.tracks.seq_no %]
Track Artist: [% product.tracks.artist %]
ISRC: [% product.tracks.isrc %]
Title: [% product.tracks.title %]
Version: [% product.tracks.version %]
Playtime: [% product.tracks.playtime %]

ARTIST Datapoints

ARTIST Infos
Artist: [% release.artists.artist_name %]
Bio English: [% release.artists.bio_engl %]
Bio 2nd language: [% release.artists.bio_own %]
Artist Picture 1: [% release.artists.artwork1 %]
Artist Picture 2: [% release.artists.artwork2 %]
Artist URL1: [% release.artists.url1 %]
Artist URL2: [% release.artists.url2 %]

 

Tips for HTML Designers

To include artwork or logos in your Infosheet:

<img src="link to picture" width="100">

link to picture must be replaced with a valid URL. You can upload files to details as described here.
Looping examples for multiple items:

[% FOREACH product = release.products %]
  [% product.format_name %]: [% product.catalog_no %] [% product.title %] [% product.version %]
[% END %]

Tracklist (per product, per set):

[% FOREACH track = product.tracks %]
  [% track.seq_no %]. [% track.title %] [% track.version %] ([% track.playtime %])
[% END %]

Artist URLs:

[% FOREACH artist = release.artists %]
  [% artist.url1 %]
  [% artist.url2 %]
[% END %]

Display content only once inside a loop:

[% IF loop.count == 1 %] This will be only displayed once, even when part of a loop [% END %]

Make weblinks clickable in your template:

Artist URL1: <a href="[% release.artists.url1 %]">[% release.artists.url1 %]</a>
Artist URL2: <a href="[% release.artists.url2 %]">[% release.artists.url2 %]</a>
NOTE: At this point you will need to contact us with your custom HTML so we can include it in the database.

Example: Custom HTML Template (Copy & Paste)
Here is the HTML including datapoints for a custom Infosheet (use as-is):

<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<style type="text/css"> #footer
</style>
<style type="text/css" media="print"> #footer
</style>
<table style="width: 965px;" border="0">
  <tbody>
    <tr>
      <td>
        <table border="0" width="965" cellspacing="0">
          <tbody>
            <tr>
              <td style="width: 35%; vertical-align: top; border-top: 1px solid #000; border-bottom: 1px solid #000; border-left: 1px solid #000;">
                [% FOREACH product = release.products %] [% IF (product.format_name != "CDA") AND (product.format_name != "Digital Album") AND (product.format_name != "Digital Single") %]
                [% IF loop.count == 1 %][% END %][% IF product.ppd != "" %][% END %][% IF loop.count == 1 %][% END %]
                [% END %]
                <table border="0" width="100%">
                  <tbody>
                    <tr>
                      <td style="vertical-align: top; text-align: center;">
                        <img style="width: 300px;" src="[% release.artwork1_link %]">
                      </td>
                    </tr>
                    <tr>
                      <td style="vertical-align: top;">&nbsp;</td>
                    </tr>
                    <tr>
                      <td style="vertical-align: top;">
                        <span style="font: 10pt Arial, Helvetica, sans-serif;">Label: [% release.label_name %]</span>
                      </td>
                    </tr>
                    <tr>
                      <td style="vertical-align: top;">&nbsp;</td>
                    </tr>
                    <tr>
                      <td style="vertical-align: top;">
                        <span style="font: 10pt Arial, Helvetica, sans-serif;">Genre: [% release.genre_name %]</span>
                      </td>
                    </tr>
                    <tr>
                      <td style="font: 10pt Arial, Helvetica, sans-serif;">&nbsp;</td>
                    </tr>
                    <tr>
                      <td style="vertical-align: top;">
                        <span style="font: 10pt Arial, Helvetica, sans-serif;">[% product.format_name %]</span>
                      </td>
                    </tr>
                    <tr>
                      <td style="vertical-align: top;">
                        <span style="font: 10pt Arial, Helvetica, sans-serif;">Cat #: [% product.catalog_no %]</span>
                      </td>
                    </tr>
                    <tr>
                      <td style="vertical-align: top;">
                        <span style="font: 10pt Arial, Helvetica, sans-serif;">Retail Price: [% product.ppd %]</span>
                      </td>
                    </tr>
                    <tr>
                      <td style="vertical-align: top;">
                        <span style="font: 10pt Arial, Helvetica, sans-serif;">UPC: [% product.barcode %]</span>
                      </td>
                    </tr>
                    <tr>
                      <td style="vertical-align: top;">&nbsp;</td>
                    </tr>
                    <tr>
                      <td style="font: 10pt Arial, Helvetica, sans-serif;">
                        <p><u>Tracklist</u></p>
                        [% END %] [% IF loop.count == 1 %]
                        <p>
                          [% track_set_nos = [] %] [% FOREACH trk = product.tracks %] [% set_no = trk.set_no %] [% NEXT IF track_set_nos.grep("^$set_no$").size %] [% track_set_nos.push(set_no) %] [% FOREACH track = product.tracks %] [% NEXT IF set_no != track.set_no %]
                        </p>
                        <ul>
                          [% track.seq_no %]. [% track.title %] [% track.version %] ([% track.playtime %])
                        </ul>
                        <p>[% END %] [% END %]</p>
                        [% END %]
                      </td>
                    </tr>
                    <tr>
                      <td style="font: 10pt Arial, Helvetica, sans-serif;"><hr></td>
                    </tr>
                    <tr>
                      <td style="font: 10pt Arial, Helvetica, sans-serif;">&nbsp;</td>
                    </tr>
                    <tr>
                      <td style="font: 10pt Arial, Helvetica, sans-serif;">
                        <a href="[% l_artists.url1 %]"><strong>[% l_artists.url1 %]</strong></a>
                      </td>
                    </tr>
                    <tr>
                      <td style="font: 10pt Arial, Helvetica, sans-serif;">&nbsp;</td>
                    </tr>
                    <tr>
                      <td style="font: 10pt Arial, Helvetica, sans-serif;">
                        <a href="[% l_artists.url2 %]">[% l_artists.url2 %]</a>
                      </td>
                    </tr>
                    <tr>
                      <td style="vertical-align: top; text-align: center;">&nbsp;</td>
                    </tr>
                    <tr>
                      <td style="vertical-align: top; text-align: center;">&nbsp;</td>
                    </tr>
                    <tr>
                      <td style="vertical-align: top; text-align: center;">
                        <img src="https://details.zendesk.com/hc/article_attachments/29704673404445" width="75">
                      </td>
                    </tr>
                  </tbody>
                </table>
              </td>
              <td style="width: 60%; vertical-align: top; border: 1px solid #000;">
                <table border="0" width="100%">
                  <tbody>
                    <tr>
                      <td style="font: 10pt Arial, Helvetica, sans-serif; text-align: center;">&nbsp;</td>
                    </tr>
                    <tr>
                      <td style="vertical-align: top; text-align: center;">
                        <img src="https://details.zendesk.com/hc/article_attachments/29704683096989" width="100">
                      </td>
                    </tr>
                    <tr>
                      <td style="font: 10pt Arial, Helvetica, sans-serif; text-align: center;">&nbsp;</td>
                    </tr>
                    <tr>
                      <td style="font: 26pt Arial, Helvetica, sans-serif; text-align: center;">[% release.release_artist %]</td>
                    </tr>
                    <tr>
                      <td style="font: 10pt Arial, Helvetica, sans-serif; text-align: center;">&nbsp;</td>
                    </tr>
                    <tr>
                      <td style="font: 14pt Arial, Helvetica, sans-serif; text-align: center;">[% release.release_title %]</td>
                    </tr>
                    <tr>
                      <td style="font: 10pt Arial, Helvetica, sans-serif; text-align: center;">&nbsp;</td>
                    </tr>
                    <tr>
                      <td style="font: 10pt Arial, Helvetica, sans-serif; text-align: center;">RELEASE DATE: [% release.release_date %]</td>
                    </tr>
                    <tr>
                      <td style="font: 10pt Arial, Helvetica, sans-serif; text-align: center;">&nbsp;</td>
                    </tr>
                    <tr>
                      <td style="font: 10pt Arial, Helvetica, sans-serif; text-align: left;">[% release.release_info_english | html | html_line_break %]</td>
                    </tr>
                  </tbody>
                </table>
              </td>
            </tr>
          </tbody>
        <table>
      </td>
    </tr>
  </tbody>
</table>

How To: Physical, Supplier & Consignment Orders

In details, you can handle physical stock movements both from suppliers and to distribution partners using Supplier Orders, Consignment Orders, and Physical Orders. These workflows ensure that inventory, accounting, and royalty processes remain aligned across all steps.

► Creating a Physical Order

Physical Orders represent the standard distribution workflow shipping products from your stock to clients, shops, or partners.

  1. Go to DISTRIBUTION / ORDERS and click [+] to create a new order.
  2. Select the DISTRIBUTION ACCOUNT, STOCK ACCOUNT, and ORDER TYPE (e.g., Invoice Order, Consignment).
  3. In the subtab OVERVIEW, set general parameters such as Currency, VAT Handling, and Payment Method.
  4. Proceed to BACKORDERS to auto-select or manually add any open backorders for this account.
  5. Continue to ORDER LINES and click [+] to add all items and quantities to the order. Adjust prices or discounts as needed.
  6. In PACKING / SHIPPING, check available stock, enter total weight, select a shipping type, and add costs if applicable.
  7. Finally, review the SUMMARY tab. If all details are correct, click [ACCOUNT] to confirm and process the stock movement.

Once accounted, stock movements are executed, invoices are generated (if applicable), and backorders are updated automatically.

► Creating a Supplier Order

Supplier Orders are used to stock up on physical products for example, when a label or pressing plant delivers finished goods to your warehouse.

  1. Go to DISTRIBUTION / SUPPLIERS and select the supplier account from the list.
  2. Open the subtab ALL ORDERS and click [+] to create a new order.
  3. Select an Order Type (Manufacturing, Invoice, or Consignment).
  4. Add the Products and specify the quantities to be received.
  5. Confirm with [OK] to create the order.

Once accounted, the stock levels in PRODUCTS / STOCK will automatically update. If changes are needed later, click [REOPEN] to reverse stock movements, adjust, and then [FINISH ORDER] again.

► Creating a Consignment Order

Consignment Orders allow you to manage goods that remain your property but are stored at another location typically a partner label or retailer.

  1. Go to DISTRIBUTION / SUPPLIERS and choose the relevant supplier account.
  2. On the subtab ALL ORDERS, click [+] and select Order Type: Consignment.
  3. Add the products and enter the quantity for each one.
  4. Assign the DISTRIBUTION ACCOUNT where the goods will be delivered.
  5. Confirm with [OK].

Once the goods are shipped, click [ACCOUNT] to finalize. The delivery will update stock levels and trigger the corresponding royalty logic for the supplier.

► Handling Returns & Reopening Orders

Returns and adjustments are part of regular warehouse workflows. When a return or correction is required:

  • Click [REOPEN] on an accounted order to undo the stock movement.
  • Adjust quantities, products, or order type as needed.
  • Click [FINISH ORDER] to process the updated movement again.

For returned consignment goods, use the Return Consignment order type to move goods back into your stock account.

► Automating Royalty & Supplier Accounting

Each accounted Supplier or Consignment Order automatically creates the financial base for royalty settlements with suppliers or partner labels.

  • Delivered stock from a Supplier Order is registered as incoming goods and triggers a payable in ACCOUNTING / COSTS.
  • Delivered stock from a Consignment Order is tracked for royalty statements and will later appear in ROYALTY / RECOUPABLES.
  • Accounted Physical Orders generate outgoing invoices and reduce warehouse stock automatically.

This automation ensures that physical stock movements always align with their financial implications without additional manual entry.

Using Physical, Supplier, and Consignment Orders efficiently helps maintain clean stock control and transparent financial reporting while minimizing manual adjustments.

How to Import Your Catalog from Spotify

This article explains how to import digital catalog metadata from Spotify using CATALOG MANAGEMENT / CATALOG IMPORT.

Spotify Import allows you to search Spotify for albums and tracks and create catalog metadata directly in details, without manual data entry.

Spotify Import helps you build your digital catalog quickly. It imports releases, products and tracks with full metadata and artwork.

Audio files and physical products are not imported.

If you are new to this feature, start with the Spotify Import Interface Overview to get familiar with the layout and available options.

Important: All Spotify searches are processed in the background. After clicking [Search], details will query Spotify and notify you by email once the results are ready.

► Where to Find Spotify Import

Go to CATALOG MANAGEMENT and open CATALOG IMPORT.

Select SPOTIFY IMPORT to access the import interface.

► Import Options Overview

Spotify Import offers three different ways to search and collect catalog data:

  • Manual search Enter UPCs or names directly
  • Bulk upload Upload multiple search values via Excel
  • Unmatched sales Search based on unmatched sales data

You can switch between these options using the Import option dropdown.

Spotify Import can be used both as a primary ingestion tool when setting up a new client database and as a helper tool to enrich existing catalogs or resolve unmatched digital sales.

► Manual Search

Use Manual Search if you want to look up individual items.

Tip: If you do not have a UPC or ISRC available, you can use external tools to retrieve identifiers from Spotify links:

  • ISRC Finder – find ISRCs from Spotify track links or artist/title searches
  • UPC Finder – retrieve UPCs from Spotify album links

These tools can help prepare search inputs for Spotify Import, especially when working with unmatched sales or incomplete metadata.

  1. Select Manual search as the import option.
  2. Choose a Search type (UPC, album, artist, or track).
  3. Enter one or more values into the text field (one per line).
  4. Optionally enable Allow fuzzy search. This allows non-exact matches to be included in the results. Please note that searches may take longer and can return a larger number of results.
  5. Click [Search].

Search results will be listed under SEARCH RESULTS once the lookup is complete.

► Bulk Upload

Use Bulk Upload to search Spotify using many identifiers at once.

  1. Select Bulk upload as the import option.
  2. Download the Excel file from TEMPLATES.
  3. Fill in the template with UPCs, albums, artists, or tracks.
  4. Upload the file using [Select New File] or drag & drop.
  5. Click [Search].

Searches are processed in the background. You will be notified by email when results are ready.

► Unmatched Sales

This option helps you enrich your catalog based on unmatched digital sales.

  1. Select Unmatched sales as the import option.
  2. Click [Search] to scan unmatched sales data.

details will search Spotify for products and tracks related to those sales and display any matches found.

► Review Search Results

All searches appear in the SEARCH RESULTS tab.

Each result shows the search time, search type, and the number of products and tracks found.

Results are evaluated against your existing catalog:

  • Items with an existing Spotify ID in your database are automatically excluded from new imports
  • Search results referencing products already present in details (for example via the same barcode) are clearly marked as existing

Open a result to review the retrieved products and tracklists before importing.

► Finalize the Import

  1. Select the products you want to import.
  2. Unselect any items you do not want to create.
  3. Edit product versions or tracklists if needed.
  4. Confirm to create releases, products, and tracks.

Imported items will appear immediately in your catalog and can be edited like any other catalog entry.

Digital releases imported from Spotify can later be extended with physical products using RELATED PRODUCTS / ADD RELATED PRODUCTS inside any release.

► Spotify Import vs Excel Import

Both import methods can be used to build your catalog, depending on your setup and workflow.

  • Spotify Import is ideal if your digital catalog already exists on Spotify and you want to quickly import full metadata, tracklists, and artwork.
  • Excel Import is recommended if you manage physical products, pricing, or custom metadata, or if your releases are not available on Spotify.

Clients could use Spotify Import for their digital foundation and Excel Import to extend or refine their catalog later.

Automatic Sales Ingestion From Apple / iTunes

 

This article explains how details automatically ingests sales and financial reports directly from Apple / iTunes, removing the need for manual downloads and recurring imports.

► What Automatic Apple / iTunes Ingestion Means

Apple provides sales and financial reporting for its services through iTunes Connect. Instead of downloading these reports manually, details connects directly to Apple s official reporting interface and retrieves new statements automatically.

Once configured, new Apple reports are fetched as soon as they become available and processed inside details, without any recurring action required from your team.

This means you no longer need to:

  • log in to iTunes Connect to download reports,
  • manually handle Apple report files, or
  • run recurring monthly imports.

► How the Process Works

The automated ingestion follows a predictable, hands-off workflow:

  1. You grant details access to your iTunes Connect account with permission to retrieve sales and financial reporting (login at itunesconnect.apple.com ).
  2. Please invite strom@berlin3.com as a financial user with access to reporting.
  3. details connects to Apple s reporting infrastructure using Apple s official reporting tooling.
  4. Reports are retrieved, parsed, and normalized using Apple-specific importer logic.
  5. Sales lines are validated and made available for matching, reconciliation, and royalty calculations inside details.

The entire process runs automatically in the background and does not interfere with your day-to-day work.

Reference
Automated ingestion is based on Apple s official reporting tooling. For a detailed technical overview of Apple s reporting interface, see the Reporter User Guide 3.1.6 .

► Supported Apple Services

details currently provides automated ingestion for the following Apple services:

  • iTunes
  • iTunes Match
  • Apple Fitness
  • Apple Music
  • Apple Music Radio
  • Apple Music DJ Mix

As Apple introduces new services or reporting types, ingestion logic is extended accordingly to ensure continued compatibility.

► Benefits for You

  • Fully automated ingestion of Apple sales and financial reports
  • No recurring manual downloads or uploads
  • Consistent and normalized Apple data across all services
  • Reduced operational effort and fewer import errors
  • Immediate availability for reconciliation and royalty runs

► Ongoing Maintenance & Extensions

Apple reporting formats and services evolve over time. To keep automated ingestion reliable, details continuously maintains and updates all Apple-related import logic.

This includes adapting to new report versions, additional Apple services, and changes in delivery structure. The goal is to keep Apple imports stable and predictable without requiring action on your side.

Sales ingestion fees (Apple / iTunes)

To keep automated Apple / iTunes ingestion stable and compatible with any reporting format changes or additional reporting, details applies a dedicated service fee that covers ongoing maintenance and additional development of Apple-specific ingestion logic.

  • Applies to automated Apple / iTunes ingestions.
  • Calculated per month, based on total turnover.
  • All Apple reports of one month are counted together and charged as one monthly statement.
  • Only the first import per month is charged. Re-imports or corrections of the same data are always free of charge.

Fee Structure

Rate Type Value Example
Base fee 1.5 0 (0.15%) Turnover 10,000  Fee 15
Minimum (Apple) 10 per month Turnover 2,000  Fee 10
Maximum 50 per month Turnover 33,333  Fee 50

Examples

  • 500 monthly turnover 10 fee (minimum)
  • 2,000 monthly turnover 10 fee (minimum)
  • 10,000 monthly turnover 15 fee
  • 33,333 monthly turnover 50 fee (maximum)
  • 100,000 monthly turnover 50 fee (maximum)

Licence Income, Invoicing & Royalty Integration

This article explains how licence income is recorded, invoiced, and included in Royalty Accounting in details.

Important:
Licence income only becomes relevant for royalty statements once the related invoice is marked as PAID.
The Payment Date determines the royalty period.
Licence income will be included in the royalty statement for the period in which the Payment Date falls.
► RECORDING LICENCE INCOME

Open the relevant Licence and go to the INCOME tab.

Click [+] to add a new income entry.

You can record:

  • Advances
  • Flat fees
  • Periodic income
  • Royalty-based settlements

Each income entry can later be linked to an invoice.

► CREATING AN INVOICE

From within the Licence, click [INVOICE].

Select the desired invoice layout and confirm with [OK].

The system creates an invoice in ACCOUNTING and links it directly to the Licence.

The invoice will appear:

  • In the Licence s INCOME tab
  • Under the Licence Account s INVOICES tab

At this stage, the income is still not part of royalty calculations.

► IMPORTANT: DO NOT CREATE LICENCE INVOICES DIRECTLY IN ACCOUNTING

In fast-moving sync or advertising deals, there may be pressure to issue an invoice quickly.

While it is technically possible to create a free invoice directly in ACCOUNTING / INVOICES, this is not recommended for licence income.

Common mistake:
Creating an invoice directly in Accounting does not create a connection to a Licence.
It may not create a Licence at all.

If you create an unrelated invoice:

  • There will be no link to a Licence Account
  • The income will not be visible in the Licence workspace
  • The payment will not be automatically distributed to Royalty Accounts
  • The income will not appear in royalty accounting

To maintain a structured and traceable database, always follow the correct workflow:

  1. Start from the Licence Account
  2. Create the Licence
  3. Add Income
  4. Create the Invoice from within the Licence
  5. Mark the invoice as PAID

This ensures that you can always see:

  • Who you licensed music to
  • How many and which licences you made with that partner
  • Which licences were paid
  • How income was distributed to royalty contracts
If you have already created a free invoice directly in Accounting and need to relate it back to a Licence and Licence Account, please contact label_team@details.eu for assistance.

The structured workflow may feel slightly longer, but it guarantees full transparency, automatic royalty integration, and reliable reporting.

► PAYMENT STATUS & ROYALTY PERIOD

An invoice must be marked as PAID to become royalty-relevant.

If you are unsure how to do this, please refer to: How to set an invoice to paid .

The Payment Date determines:

  • The accounting recognition date
  • The royalty period
  • The royalty statement in which the income appears
Common mistake:
The invoice date does not control royalty allocation.
Only the Payment Date determines in which royalty period the licence income is included.

Example:
If an invoice is dated March but paid in April, the income will be included in the royalty period covering April.

Unpaid invoices are not included in royalty calculations.

► HOW LICENCE INCOME FLOWS INTO ROYALTY ACCOUNTING

Once the invoice is marked as PAID:

  1. The income is recognized based on the Payment Date.
  2. The system distributes the amount to the linked Royalty Accounts.
  3. The distribution follows the existing royalty configuration of the licensed assets.
  4. The income appears in the corresponding royalty statement period.

The allocation is automatic and based on the assets assigned in the Licence.

► REPORTING & EXPORTS

Licence income and invoice data can be analyzed using:

  • Standard Excel exports
  • Custom Plugins (SQL-based reports on request)

Reporting allows you to review turnover per licence, account, asset, or period.

About date formats

When working with dates across different regions and contexts, consistent formatting becomes important especially in international collaboration.

In details, all dates are displayed using the internationally recognized format defined by ISO 8601.

This means the standard format used throughout the platform is yyyy-mm-dd for example: 2016-11-30.

The format is designed for clarity and avoids any ambiguity between days and months. It’s widely used in data exchange and software environments for exactly this reason.

This approach ensures that dates are easy to read and interpret regardless of language or location and helps maintain consistency across all areas of the platform.

BOOKING Template Editor

In details we use HTML templates for almost every document which you might want to print or send out as a link.

HTML is the standard programming language for websites and yes, every document you create in details is actually a webpage.

The layout of those webpages is 100% fully customizable.

Some templates only we can change, but others, especially BOOKING documents like contracts, itineraries etc we make available in BOOKING / TEMPLATES

If you open a template in BOOKING / TEMPLATES you will see the code on the left hand side and all our variables (“Template Tags”) on the right hand side.




This means you can change and manipulate all your document templates for BOOKING yourselves.

NOTE: If you change templates yourselves, you will be responsible for the result!
You can easily adapt texts etc. but once you touch more complex issues like tables conditional clauses (IF ELSE) and calculations etc. it can get tricky! Find more information on how our templates work HERE.

Please be aware that changing templates includes the risk of breaking the HTML code, which will then need to be repaired.
You can always do this yourself in our HTML Editor or any other online or offline HTML EDITOR.
If you require our help, it will be billed at our current support rate.


This editor will allow you to change any text in your template. For advanced information on variables please check the respective WIKI articles:
Step by Step Guide to variables in a standard Booking Contract