You can import custom sales data – e.g. your own e-commerce sales or sales from an unsupported distributor – using the Royalties HQ sales CSV template. For importing Amazon KDP, Lightning Source, or Findaway sales imports, see this help page instead.
Tip: if you’re importing wholesale order or e-commerce sales, you might find our ‘Processing wholesale orders‘ guide useful.
Download the sales import template #
First, download the sales import template from the ‘Add New Sales’ page:
- In the main menu (icon top left) click Add New Sales.
- Click the “Download sales import template” Link.
- The template is downloaded to your computer.
Prepare your sales data #
Next, use your spreadsheet software (for example, Google Sheets, or Excel) to populate the template with your sales data. Note: Excel and Google Sheets like to be ‘helpful’ and format your numbers, so please avoid this. You must format numbers as text.
Custom sales data #
The sales upload template includes some instructions on each line that starts with a #. This info is to help you format your data correctly for importing. Any line starting with a ‘#’ will be skipped in the import process, so can either be ignored or safely deleted before importing.
Required fields #
| Field | Description | Example |
|---|---|---|
| isbn or asin | Product identifier (at least one required) | 9781234567890 |
| royalty_month | Month royalty applies | 2024-08 |
| currency | ISO-4217 currency code | USD, GBP, EUR |
| royalty | Net amount earned (royalty on sales plus royalty on refunds), no currency symbol | 3.78 |
| royalty_on_sales | Total royalty from sales before refunds, no currency symbol | 4.50 |
| units_sold | Number of copies sold (required if royalty_on_sales > 0) | 15 |
| sales_channel | For custom imports, use “other” | other |
| sale_country | Required only if your contracts have country-specific rules | US, GB |
| discount_percent | Required only for list price royalty contracts | 20 |
Optional fields #
| Field | Description | Example |
|---|---|---|
| royalty_on_refunds | Amount deducted from royalties due to refunds or returns. Required if units_refunded has a positive value. Enter as negative decimal, or leave empty if no returns/refunds. | -10.50 |
| units_refunded | Number of units refunded or returned. Enter as positive, or leave empty if no returns/refunds. Required if royalty_on_refunds is greater than 0 | 3 |
| marketplace | Distributor or sale type (recommended) | wholesale, Shopify |
| list_price | Selling price, no currency symbol (recommended) | 12.99 |
| title & author | Helpful for visual verification during import | — |
Handling refunds #
If you need to record returns or refunds, use these fields:
- royalty_on_refunds – Amount deducted from royalties (enter as negative, e.g., -10.50)
- units_refunded – Number of copies refunded (enter as positive, e.g., 5)
How to upload custom sales data #
To upload your custom sales files:
- Go to the main menu (icon top left) and click Add New Sales.
- Drop your sales file into the dropzone (or click the dropzone and select your file)
- Royalties HQ will attempt to recognise the type of file. This will be shown in a drop-down. Once the correct type of file is selected, click Continue.
- The file will now be checked, and will show status as ‘Validating’ while Royalties HQ checks that the file can be imported.
- If the file shows as ‘Ready to import’, click the Import button (or, if it shows ‘Rejected’, click on the filename to see more details, then click on ‘Invalid rows’ – details of errors will be shown).
- After import, the contents of the file will be imported. Each row becomes a sales line, grouped into one or more sales batches. Click the View Batches button to see the imported sales batches.
Once you’ve uploaded sales data, you need to add a publisher income payment for each sales batch that has sales that are not in your publisher currency.