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 dates 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 date elements.

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

Booking Start Date

Variable Output example
[% 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

Variable Output example
[% 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 and Due Date Variables

Variables are also available for Hotel start and end dates when needed.

In addition, variables are available for due dates of artist fees and booking fees.


Date Calculation Example

You can calculate dates depending on another date in your template. The following example 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 %]

You can also format a date plus 2 days in a readable form, for example: 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:

Token Description Example
%a Short day name Mon
%Y Full year 2024
%y Short year 24
%m Month number 01–12
%b Short month name Nov
%B Full month name November
%d Day of month 01–31
%H Hour 00–23
%M Minute 00–59
%s Second 00–59

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 would like to use per language. This can be custom programmed and is billable 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.

  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

Accounting Recoupables: Recoupable date

When accounting your recoupables, please note the recoupable dates are set by the following rules:

  1. If the artist has no royalty statement yet, the release date of the artist’s record will be used as the recoupable date so that recoupables will be included on the first statement.
  2. If the royalty period is not accounted for the cost date yet, recoupable date will equal cost date.
  3. If the royalty period is accounted for the cost date already, the recoupable date will be the last day of the current royalty statement period plus one day.