Netvisor
Send invoices to Netvisor for accounting and financial management. Learn how to set up, configure, and use the integration.
🔗 What the Integration Does
Netvisor is a Finnish accounting and financial management platform. The Thril–Netvisor integration lets you send invoices from Thril to Netvisor, where they are booked and managed.
Key things to know:
- Invoices are sent manually: one at a time from the invoice detail view, or in bulk from the Invoices list
- The integration is configured at the company level and applies across all your venues
- Invoice statuses are synced automatically from Netvisor twice daily
- Customer data is synced to Netvisor when an invoice is sent
- You can record payments and delete them directly from Thril
- You can create credit notes for sent invoices
- Company customers are automatically synced to Netvisor when their first invoice is sent
- Each invoice has an accounting date (kirjauspäivä) that controls which accounting period it posts to. It defaults to the last day of the latest reservation month on the invoice, but you can override it manually when creating or editing the invoice
⚙️ Configuring Netvisor
Before connecting Thril, several things must be set up in your Netvisor account. Use this section as a checklist.
API credentials
Netvisor navigation: Company menu → API identifiers
Obtain your Customer ID and Customer Key. These are organisation-specific credentials that grant Thril access to your Netvisor account via the API.
Required API endpoint permissions
Netvisor navigation: Company menu → API resource access rights
In API resource access rights, add the integration or approve an existing partner. Select Thril / Sportribe Oy from the list and grant access. This activates the endpoints Thril needs, or prompts you to confirm them.
The following endpoints are included in the integration:
| Area | Endpoints |
|---|---|
| Customers | customerlist.nv, getcustomer.nv, customer.nv |
| Products | productlist.nv, product.nv |
| Dimensions | dimensionitem.nv, dimensionlist.nv |
| Sales invoices | salesinvoicelist.nv, getsalesinvoice.nv, salesinvoice.nv, deletesalesinvoice.nv, matchcreditnote.nv |
| Sales payments | salespayment.nv, deletesalespayment.nv, salespaymentlist.nv |
| Invoice status | updatesalesinvoicestatus.nv |
| Accounts | accountlist.nv |
Thril reads your chart of accounts through accountlist.nv to offer your real accounts in the Ledger accounts view and on individual items. Without it those fields fall back to a plain text box where you type the account number yourself.
Netvisor grants salespaymentlist.nv separately from the other sales payment endpoints. Thril needs it to read the payments recorded in Netvisor back onto the matching invoice. Without it, an invoice that Netvisor reports as paid is marked paid with a single lump sum, and the individual payments are not shown.
Accounting dimension headers
Do this before you create the integration in Thril. Thril cannot create these headers itself.
Netvisor navigation: Financials → Settings → Management of cost objects (Taloushallinto → Asetukset → Laskentakohteiden hallinta)
Click Lisää uusi otsikko and create two headers, named exactly:
LajiToimipaikka
When you are done, the page looks like this:

If the headers are missing when you click Create integration, Thril shows the error "Required dimension headers are missing in Netvisor". Create them and try again.
Payment methods
Netvisor navigation: Sales → Basic data and settings → Payment methods → New payment method
Thril uses alternative (non-bank) payment methods when recording sales payments in Netvisor. The following payment methods must be created before payments can be recorded from Thril:
| Payment method | Description |
|---|---|
epassi | Epassi payments |
käteinen | Cash payments |
pankkikortti | Card payments |
If a payment method is missing in Netvisor, recording a payment with that method will fail.
Automatic invoice sending
Netvisor navigation: Sales → Invoicing settings and automatic sending (Myynti → Laskutuksen asetukset ja automaattilähetys)
Invoices Thril sends to Netvisor arrive there as sales invoices, but Netvisor decides how and when they are delivered to the customer. Enable automatic sending in this view if you want Netvisor to forward the invoices to your customers (as e-invoices, email, or print service) without you approving each one in Netvisor separately.
If automatic sending is left off, invoices stay in Netvisor waiting to be sent, and you have to send them from Netvisor manually. In Thril the invoice still shows as sent to Netvisor either way — Thril's status reflects the invoice's status in Netvisor, not whether Netvisor has delivered it to the customer.
Automatic sending is a Netvisor-side setting and applies to all invoices in your Netvisor organisation, not only those coming from Thril. If you are unsure how it affects your other invoicing, check with your accountant or Netvisor account manager first.
Business ID
Your company's Finnish Business ID (Y-tunnus) in Thril must match the organisation registered in Netvisor. It is used to identify your organisation in every API call.
Tip: If you need help enabling API endpoints, creating dimension headers, or configuring payment methods, contact your Netvisor account manager or Netvisor support.
🚀 Setting Up in Thril
Before you start, make sure the
LajiandToimipaikkaheaders exist in Netvisor. See Accounting dimension headers.
- Navigate to Settings → System → Integrations → Netvisor
- Enter your Customer ID and Customer Key
- Set the Integration status to Active
- Click Create integration
Thril will automatically initialize products and dimensions in Netvisor. Once complete, you're ready to start sending invoices.
Your company must have a valid Business ID configured in Thril. It is used as the Netvisor organisation identifier.
🧾 Sending Invoices to Netvisor
Sending a single invoice
- Open an invoice from the Invoices page
- Use the Send to Netvisor action
- Once sent, the invoice receives a Netvisor reference number
Billing address required: Individual customers (Thril app users) must have a complete billing address on their profile before you can send their invoice to Netvisor. If the address is missing, the send will fail with an error. You can add or update the address in the customer's profile before retrying.
When a send fails: the send runs in the background, so its outcome lands after the invoice view has already accepted it. Until the invoice reaches Netvisor, the invoice's details show why the last send failed, in Netvisor's own words, and the same reason is on the Audit log tab. The invoice is released straight away, so fix the cause and send it again. When Netvisor refuses the VAT rate for a bookkeeping account, Thril lists the accounts the invoice's lines were sent with, in brackets after the reason: one of them is the account to fix. Nothing posted, since Netvisor refused the invoice whole.
Matching existing Netvisor customers: The first time you send an invoice for a Thril app user, Thril checks whether a customer with the same email already exists in Netvisor. If exactly one match is found, the invoice is linked to that existing customer instead of creating a duplicate, and any billing details missing from the customer's Thril profile (address, postal code, city, country, phone) are filled in from Netvisor. Details already set in Thril are kept. If there is no match, or several Netvisor customers share that email, Thril creates a new customer as before. This matching is best-effort and never blocks the send.
After an invoice has been sent, additional actions are available under Netvisor in the Actions menu:
- Sync status: manually refresh the invoice status from Netvisor
- Create payment: record a payment against the invoice in Netvisor (select from ePassi, cash, or card using the dropdown)
- Edit: edit the invoice details and push the changes to Netvisor (the edit form title is Edit invoice in Netvisor)
- Create credit note: create a full credit note for the invoice (Thril action)
- Match credit note in Netvisor: link a credit note to its original invoice in Netvisor (credit notes only, when both are open)
- Delete from Netvisor: permanently delete the invoice from Netvisor and from Thril. Only available when the invoice is in unsent status in Netvisor. A confirmation is required before the deletion proceeds. If the invoice's status has changed since the last sync, the status is updated automatically and an error is shown instead of deleting.
Invoice statuses are synced automatically from Netvisor immediately after every action (send, create payment, delete payment) and also twice daily in the background, so you rarely need to sync manually.
Sending multiple invoices at once
To send a batch of invoices to Netvisor in one go:
- Go to the Invoices page
- Check the boxes next to the invoices you want to send
- Open the selection menu at the top of the table and choose Send to Netvisor
Invoices already sent to Netvisor are automatically skipped. A summary shows how many succeeded and lists any failures with the reason.
Exporting invoices as Finvoice XML
When first enabling the Netvisor integration, you may want to bring historical invoices created in Thril before the integration was set up into Netvisor as well. You can do this by exporting them as a Finvoice XML file and importing the file into Netvisor manually.
- Go to the Invoices page
- Click Export data → Download as Finvoice XML
- Select the start date and end date. Only invoices with an invoicing date in this range are included
- Click Download
- In Netvisor, go to Company menu → Data import → Invoice/payment XML and import the file
Coverage and batch size: The export includes only internal (Thril) invoices. Invoices created on the Netvisor invoicing path are excluded, so they never appear in this file. If 10,000 or more invoices match your selected range, the export is rejected entirely and no file is produced. Narrow the date range or run several smaller exports with different date ranges.
Before importing: Make sure the relevant VAT periods are open in Netvisor. Importing invoices for a VAT period that has not been opened will fail.
Important: Invoices imported via XML are not linked to their counterparts in Thril. Any status changes made to these invoices in Netvisor (such as marking them as paid) will not be reflected back in Thril. For ongoing invoicing where status sync matters, use the Send to Netvisor method instead.
This option appears in the Export data menu only when your Netvisor integration is active.
Creating an invoice from a reservation
When creating an invoice directly from a reservation (for example via the Reservations page), you can choose whether the invoice should be a Thril internal invoice or sent to Netvisor. An Invoicing system selector appears in the create-invoice form when Netvisor is connected.
Moving an invoice to another invoicing system
An invoice raised on the wrong system does not have to be deleted and retyped. Open the invoice and choose Actions → Change invoicing system, then pick the new one.
The action is offered only while nobody outside Thril has seen the invoice: it has to be unsent, it must not have been sent to an external system already, and it must not be a credit note. A credit note is matched against its original in the external system, so it stays wherever that original lives.
What happens to the numbering depends on where the invoice is going, and the dialog says so before you confirm:
- To Netvisor: the Thril invoice number and the bank reference are given up. Netvisor assigns both when the invoice is sent there, and Thril does not hand the released number out again. Tell the customer if they are already holding a PDF with the old number on it.
- To Amili: the invoice keeps its number, and Amili takes the reference number from the invoice Thril sends.
- To Thril: the invoice keeps its number, or gets the next free one for your company if it came from Netvisor, and gets a Thril reference number.
Netvisor requires a product and a domestic VAT rate on every line, which a Thril invoice does not. Moving an invoice to Netvisor therefore asks you for both on every line, instead of letting the send fail later. A line raised from a reservation takes its product from the reservation's sport, and other lines start on the Pro Shop product.
The change is recorded in the invoice's audit log, with the system and the invoice number both before and after.
🏢 Company Customers in Netvisor
When you send an invoice for a company customer to Netvisor, the customer is automatically created in Netvisor and tagged as a Netvisor customer in Thril. You cannot manually mark a customer as a Netvisor customer. The tag is set by the system on first send.
To ensure a smooth first send, fill in the customer's details before sending:
- VAT identifier: must be in a format Netvisor accepts (e.g.
FI12345678) - E-invoicing details (Finvoice): operator code and address. For customers already tagged as Netvisor customers, the operator code field shows a dropdown of Netvisor-accepted codes; otherwise it is a free-text field.
These details are included automatically in invoices sent to Netvisor for that customer.
Any updates to a company customer's details in Thril are automatically synced to Netvisor for customers who already have an account there.
🔄 Syncing Products and Dimensions
If you add new venues or sport types after the initial setup, use the Sync products and dimensions button on the Netvisor integration settings page. This will:
- Create new products in Netvisor for any new sport types
- Add new dimension items for any new venues
Existing products and dimensions in Netvisor are not affected.
📊 Ledger Accounts
Every line on a sales invoice Thril sends to Netvisor posts to a bookkeeping account. Set those accounts here and your accountant stops re-coding court hire, coaching, pro shop goods and the café by hand.
Netvisor also reads the VAT treatment from the account, so pick accounts whose VAT handling matches what is being sold. An account that carries no VAT identifier in Netvisor makes Netvisor refuse the whole invoice, not only the line that named it.
Setting an account per Netvisor product
- Go to Settings → System → Integrations → Netvisor
- Click Ledger accounts, next to Sync products and dimensions
- Pick an account for each product. The counter above the list shows how many of them have one
- Click Save ledger accounts
The list holds one row per product the sync has created in Netvisor's register: one per sport type your venues offer, plus the Pro Shop product. The accounts you choose from are your own Netvisor chart of accounts, read live from Netvisor, showing the active accounts by number and name. Clearing a row's account unsets it again.
The button is available while the integration is active. If the list is empty, run Sync products and dimensions first, then come back. If Thril cannot read your chart of accounts, for example because the accountlist.nv right was never granted, the row turns into a text box and you type the account number yourself.
Choosing an account Netvisor will accept
Every account picker, in the dialog and on individual items, splits your chart of accounts into Sales accounts and Other accounts. Thril works out which part holds sales from your own default sales accounts in Netvisor, so a venue with a custom chart of accounts is judged by its own chart.
Both groups stay selectable. A venue that books court hire as rental income is not doing anything wrong, so an account outside the sales group is a warning under the field rather than a refusal:
- Netvisor does not keep sales on this account. Thril shows this when the account falls outside the Sales accounts group it worked out above. The send can fail, because Netvisor takes the line's VAT treatment from the account and refuses a rate the account will not carry.
- Your Netvisor chart of accounts has no account nnnn. This one Netvisor refuses outright. An account reaches this state by being typed while the chart of accounts was unreachable, or by being removed in Netvisor after it was saved here. Both warnings need a chart Thril can read: while
accountlist.nvis unreachable the field is a plain text box and warns about nothing.
Netvisor's API does not expose an account's VAT identifier, so Thril cannot check it before the send. Treat the first warning as a prompt to check the account with your accountant, not as a verdict.
Only accounts that are active in Netvisor are offered. An account you have since retired stays recognised where it was already saved, so nothing silently loses its account.
Overriding the account on a single item
A Ledger account field is available on individual priced items: courts and other bookable spaces, memberships, session cards, services, events, course groups, league classes, tournaments, credit products and pro shop product variants. Use it when one item's revenue belongs on a different account than the rest of its product. Leave it empty and the item follows the product account.
The field appears only when the Netvisor integration is connected, since nothing else reads it.
Which account a line ends up on
Thril takes the first of these that is set:
- The sold item's own Ledger account
- The account of the item's Netvisor product. A parent sport covers its variants, so an account on Padel also applies to Padel singles unless the variant has one of its own
- Netvisor's default domestic sales account, 3000
A till sale line and a membership period line no longer say what they sold once the invoice exists, so their account is resolved and stored on the line when the invoice is created. Changing an item's account afterwards does not move invoices that were already created. A credit note reverses onto the same account as the line it credits, and the Finvoice XML export resolves accounts the same way.
✏️ Updating or Disabling the Integration
You can update your Netvisor credentials at any time from Settings → System → Integrations → Netvisor. Leave a credential field blank to keep the existing value.
To disable the integration, switch the Integration status to Inactive. A confirmation dialog will appear, since you will no longer be able to send invoices to Netvisor while the integration is inactive.
You can re-enable it at any time by switching back to Active.
🛠️ Need Help?
For questions about the Thril integration setup, contact our support team at support@thril.fi.
For questions about Netvisor API credentials, portal configuration, or your Netvisor account, contact your Netvisor account manager or Netvisor support.