Import custom sales
Import e-commerce, wholesale, or custom distributor sales using the Royalties HQ CSV template.
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 InAudio (formerly 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)
Remember: Quantities are always positive (5 books refunded), but refund amounts must be negative (-10.50) since they reduce your royalties.
When you are ready to import your custom sales data, follow the steps below:
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.