Finvoice 1.3, 2.0, 2.01 and non-EN16931 version of Finvoice 3.0 have only XSD validation.
XSD validation verifies the structure of the document, and performs simple data type verifications for the given values, but does not recognize any calculation or logic errors.
Discounts and charges in the invoice row
Background
Implementation guideline does not explicitly define calculation logic for RowVatExcludedAmount element, but is indirectly referred in Finvoice XLS data list files.
In all Finvoice versions the logic is following:
Amount multiplied from quantity, unitprice (Row Discount deducted)
Though the documentation is not up to date it is supposed to also include sum of row charges (RowChargeDetails).
Taking this into account, the calculation logic is as follows:
RowVatExcludedAmount = (InvoicedQuantity * UnitPriceNetAmount) - (RowDiscountAmount or sum of each RowProgressiveDiscountDetails/RowDiscountAmount) + (sum of each RowChargeDetails/Amount)
Unit price and quantity
The unit price net amount (UnitPriceNetAmount) of the invoice line is always expected to be positive regardless of the type of document (invoice or credit note) and the unit quantity (InvoicedQuantity) can be either positive or negative. The standard EN16931 follows the same rule.
Unit price net amount is expected to include unit price discount:
Finvoice implementation guide does not clearly describe how to generate credit notes with row discounts and charges. Point of this guide is to provide understandable guidelines how to create a one.
Example
Example has unit price discount, row discount and row charge:
Let’s say that we have following original invoice line:
The same row in credit note:
Or the same row in credit note without row discounts and/or charges:
Resolving invoice recipient
Background
When invoice recipient details (InvoiceRecipientPartyDetails) are provided, we expect it to be the entity who should receive the invoice (via e-invoice, email or print).
There are requirements in AutoInvoice side what details the entity should have in order to route it successfully:
Party name AND
Electronic address OR
Organisation number OR
Postal address (lines: post office, post code AND country code) OR
Email address
Issue
Invoice recipient details (InvoiceRecipientPartyDetails) are sometimes incomplete.
Fix
Complement invoice recipient from buyer details (BuyerPartyDetails) in Finvoice 1.x/2.x/3.0 versions if possible.
When
Invoice recipient details are complemented with buyer details when:
When invoice recipient does not have enough details (see requirements above)
When all given invoice recipient details match with buyer details (byte by byte, e.g NAME is not the same as Name)
When one or more invoice recipient details match with buyer details, but some of the values are different.
Allowed deviating details are:
Site code
Department
Contact person name
Contact person function
Contact person department
Email address
Phone number
When invoice recipient has only one detail given
Allowed details are:
Email address
Contact person name
Invoice recipient organisation unit number (OVT)
Email address and contact person name are considered as complementing details to be added on top of the buyer details
With OVT number there are several rules and conditions when it’s assumed to belong to buyer:
Buyer does not have OVT number
SOAP/To identifier or MesasgeTransmissionDetails/MessageReceiver/ToIdentifier does not exist or is equal with value
When none of invoice recipient details match with buyer, or buyer does not have these values
Allowed details are:
Site code
Department
Contact person name
Contact person function
Contact person department
Email address
Phone number
Other
Invoice recipient details are not complemented with buyer details when:
When invoice recipient has only following details (one or all)
Address post office (town)
Address post code
Address country code
Address country name
Example
Output
Many ways of discounts
There are many ways to give discounts in Finvoice. Here is a complete invoice with multiple invoice rows with different discounts.
Note that the invoice is not EN16931 valid since the total amounts in the InvoiceDetails and EpiDetails element are not inline with the invoice rows.
We use third party cookies and scripts to improve the functionality of this website.ApproveDeclineMore info
Cookie Notice
General
This cookie notice describes Visma Solutions Oy’s (“we”, “us”, “our”) use of cookies when you visit our website. If you have any questions about our use of cookies that are not answered by the information below, please contact us on privacy@visma.com.
What are cookies and why do we use them?
Cookies are small text files that are stored on your device when you visit a website. Cookies help the website remember information about your visit to improve the website’s functionality and display more personalised and useful content.
When you visit our website, we install certain cookies on your device that are necessary for the functionality of the website. Subject to your consent, we may also use cookies or other tracking tools to collect information about your device and your interaction with our website. Currently, we use such non-essential cookies for the following purposes:
Improving the functionality of the website
Analysing the use of our website
Marketing
At the bottom of this cookie notice, you will find a complete list of the cookies we use and the purposes we use them for.
Does our use of cookies involve processing of personal data?
Depending on which cookies you have given us your permission to store on and retrieve from your device, our use of cookies may include processing of your personal data. All processing of personal data is subject to security and privacy standards enshrined in the applicable data protection legislation. You can read more about our processing of your personal data in our privacy statement.
How can you manage or delete cookies?
You can, at any time, withdraw your consent to our use of cookies that are not strictly necessary for the functioning of the website. Please note that cookies allow us to give you the best possible experience on our website and that blocking cookies will affect the website’s performance.
If you want to withdraw your consent, or otherwise manage your cookie preferences, you can easily do so by clicking on the icon in the bottom-left corner.
What cookies do we use?
Strictly necessary cookies
Strictly necessary cookies make our website usable by enabling basic functions like page navigation and access to secure areas of the website. The website cannot function properly without these cookies.
Name
Purpose
Optional
Retention time*
Recipient
Functional cookies
Functional cookies enable our website to remember information that changes the way the website behaves or looks; for example, your preferred language or the region that you are in.
Name
Purpose
Optional
Retention time*
Recipient
Analytical cookies
Analytical cookies allow us to analyse traffic sources so we can measure and improve the performance of our site. Analytical cookies enable us to see how visitors move around the website. All information these cookies collect is aggregated and therefore anonymous.
Name
Purpose
Optional
Retention time*
Recipient
_sp_id.#
Used by Snowplow Analytics to track how users are browsing and engaging with a website.
Yes
2 years
N/A
_sp_ses#
Used by Snowplow Analytics to track how users are browsing and engaging with a website.
Yes
1 day
N/A
Marketing cookies
Marketing cookies are used to build a profile of your interests to show you relevant adverts on this and other websites. The intention is to display ads that are relevant and engaging for you. If you do not allow these cookies, you will experience less targeted advertising and personalised content.
Name
Purpose
Optional
Retention time*
Recipient
snowplowOutQueue_#_post2
Collects statistical data related to the user’s website visits, such as the number of visits, average time spent on the website and what pages have been loaded. The purpose is to segment the website’s users according to factors such as demographics and geographical location, in order to enable media and marketing agencies to structure and understand their target groups to enable customised online advertising.
Yes
Persisten
N/A
snowplowOutQueue_#_post2.expires
Collects statistical data related to the user’s website visits, such as the number of visits, average time spent on the website and what pages have been loaded. The purpose is to segment the website’s users according to factors such as demographics and geographical location, in order to enable media and marketing agencies to structure and understand their target groups to enable customised online advertising.
Yes
Persisten
N/A
*The retention time is calculated from the last time you visited the website. The cookie is deleted automatically after the expiry of the time.