Importing contract types
Bulk import or update contract types (royalty rule sets) using a CSV template, with support for tiered rules, conditions, and multiple allocation types.
Contract types define the royalty rules that determine how income is allocated to rights holders. You can create and update contract types in bulk using the CSV upload feature — ideal when setting up multiple royalty agreements at once.
Contract types are reusable — once created, a single contract type can be linked to multiple rights holders and products via contract usage imports, saving you from entering the same contract terms multiple times. For this reason, contract types should be imported before contract usage.
If you only need to create one or two contract types, you may prefer to create them via the user interface.
New to contracts? Read the contracts overview first to understand how contracts, rules, and conditions work together.
Download the CSV template
A CSV template is available to download from the contract types import page:
- Go to the main menu, top left, and click Import.
- Under ‘What are you uploading?’, choose ‘Contract Types’.
- Click ‘Download contract types template file’.
- The CSV file template will be downloaded to your device.
You can also export all existing contract types from the same page. This is useful if you want to update contract types in bulk — export, amend the data in your spreadsheet software, then re-import.
How contract type imports work
Each row in the CSV represents a single rule within a contract type. Multiple rows with the same name or code are grouped as rules under one contract type.
- Rules are evaluated in order by priority — the first matching rule is used for allocation
- A rule with no conditions acts as a catch-all default
- If a contract type code already exists, its rules will be replaced with the ones in the file
For more on how rules and conditions work during royalty runs, see contracts overview.
Prepare your contract types data
Open the CSV template (or your exported file) in your spreadsheet software — we recommend Google Sheets over Excel.
Identity columns
| Column | Aliases | Required | Description |
|---|---|---|---|
| name | contract-type, contract-name, contract-type-name | See note | The display name of the contract type |
| code | contract-code, contract-type-code | See note | Unique identifier (auto-slugified) |
| description | — | No | Free-form description |
Each row must have at least one of name or code. If only a code is given (no name), the contract type must already exist in the system. If code is omitted, it is generated automatically from the name.
Rule configuration
| Column | Aliases | Required | Description |
|---|---|---|---|
| rule-priority | order, rule-order, rulepriority | No | Evaluation order (starting from 0). Auto-incremented if omitted |
| allocation-type | type, allocationtype, allocation | Yes | How royalties are calculated (see below) |
| allocation-percentage | percentage, percent, rate, royalty-rate | Conditional | Required for percentage-based types (0–100) |
| allocation-fixed-price | fixed-price, price-per-unit, fixedprice | Conditional | Required for fixed-price-per-unit type — must be greater than 0 |
Allocation types
| Type | Aliases | Requires |
|---|---|---|
| net-receipts | net receipts, net | Percentage (0–100) |
| list-price | list price, list, rrp | Percentage (0–100) |
| list-price-minus-discount | list price minus discount | Percentage (0–100) |
| fixed-price-per-unit | fixed price per unit, fixed price, fixed | Fixed price (greater than 0) |
| no-allocation | no allocation, none | Nothing |
For details on what each allocation type means, see rule actions in Creating and Managing Contracts.
Condition columns (all optional)
Each condition has an operator and a value. If an operator is provided, its corresponding value is required.
| Operator column | Value column | Description |
|---|---|---|
| discount-rate-operator | discount-rate-value | Filter by discount rate |
| sale-country-operator | sale-country-value (aliases: country, countries) | Filter by country (ISO codes) |
| units-sold-operator | units-sold-value | Filter by units sold |
| total-net-receipts-operator | total-net-receipts-value | Filter by total net receipts |
Numeric operators (discount rate, units sold, net receipts)
| Operator | Symbol | Word aliases |
|---|---|---|
| Greater than | > | greater than, more than |
| Greater than or equal | >= | at least |
| Less than | < | less than |
| Less than or equal | <= | at most |
| Equals | = | is, equals, equal to |
| Not equal | != | is not, not equal to |
| Between | — | between |
| One of | — | in, one of |
| Not one of | — | not in, not one of |
Tip: For the between operator, use the format
min-max(e.g.10-50).
Country operators
Supports: equals (=), is-not-equal (!=), is-one-of (in), is-not-one-of (not in)
Country values should be ISO country codes (2–3 letters), separated by commas. They are automatically uppercased.
Beware of spreadsheet auto-formatting
Excel and other spreadsheet software can auto-format your data in ways that corrupt it. Common problems include long numbers converted to scientific notation and dates being reformatted.
Tip: Format all cells as text before entering or pasting data. For detailed instructions, see Introduction to importing.
Examples
Simple percentage contract
| name | allocation-type | allocation-percentage |
|---|---|---|
| Standard Author | net-receipts | 25 |
Contract with tiered rules
| name | rule-priority | allocation-type | allocation-percentage | units-sold-operator | units-sold-value |
|---|---|---|---|---|---|
| Tiered Royalty | 1 | net-receipts | 30 | >= | 1000 |
| Tiered Royalty | 2 | net-receipts | 25 | >= | 500 |
| Tiered Royalty | 3 | net-receipts | 20 |
Rule priority 3 has no conditions, so it acts as the catch-all default for sales under 500 units. For more on tiered royalties, see tiered royalties.
Country-based contract
| name | rule-priority | allocation-type | allocation-percentage | sale-country-operator | sale-country-value |
|---|---|---|---|---|---|
| Regional Rates | 1 | net-receipts | 30 | in | GB,US,CA |
| Regional Rates | 2 | net-receipts | 20 |
Fixed price contract
| name | allocation-type | allocation-fixed-price |
|---|---|---|
| Fixed Rate | fixed-price-per-unit | 1.50 |
Upload your contract types CSV
When you’ve double-checked your data, save the file as a CSV. In Google Sheets, this is File > Download > CSV.
- Go to the main menu, top left, and click Import.
- Under ‘What are you uploading?’, choose ‘Contract Types’.
- Under ‘Choose your file’ click ‘Browse’ and navigate to your CSV file.
- Click ‘Next’.
- The file will be uploaded and validated (checked for problems). You will see the results on a preview page.
- If the results look good, click ‘Continue’ and the contract types will be imported (or, if the preview step highlights problems, you will need to fix the data — read the error message and check the requirements above).
Dry run preview
Before the import is applied, you will see a summary showing:
- New contract types to be created (with rule counts)
- Existing contract types to be updated (showing old vs new rule counts)
- Any validation errors that need to be fixed
You must confirm the import before any changes are saved.
Validation
The import runs validation before any changes are made:
- Name or code — at least one must be provided per row
- Allocation type — must be a recognised type
- Percentage — required for percentage-based types, must be 0–100
- Fixed price — required for fixed-price-per-unit, must be greater than 0
- Operators — must be valid if provided
- Values — required when an operator is specified
- Country codes — must be 2–3 letter ISO codes
- Rule priorities — must be unique within each contract type
- Between values — must use
min-maxformat with two numbers
Update contract types in bulk
You can also use the above process to update existing contract types in bulk.
When a contract type code in the CSV matches an existing record:
- The name and description are updated (if provided)
- All existing rules are replaced with the rules from the CSV — this is a full replacement, so any rules not in the CSV will be removed
Tips
- Use the template CSV download to get the correct column headers
- Use the export feature to download your current contract types as a starting point for edits
- Column names are flexible — many aliases are accepted (see the tables above)
- Operators can be written as symbols (
>,>=) or words (greater than,at least) - Empty condition columns are ignored — only add conditions you need
- Rule priority is optional — rules are auto-numbered if omitted
What’s next?
Once your contract types are set up, you can link them to rights holders and products by importing contract usage.