Welcome to AutoInvoice integration guide!
This guide will tell you how to connect your financial system to AutoInvoice e-invoicing and document exchange service. See how to move from testing to production, what API methods to use for different functionality, as well as get useful tips and information about how the integration works.
Let’s go!
The integration process includes setting up the integration, testing it and finally moving to production.
Before entering the production environment all integrators are required to fill in and sign AutoInvoice Integration Agreement that outlines important arrangements such as billing and support. The agreement is given to you by your integration contact point.
To get the necessary API keys to testing and production follow the steps described below.
If you haven’t quite yet decided what type of integration to make, see our Overview section. In there you can find guidance how to define the integration scope and level based on the needed functionality and automation.
To start using AutoInvoice APIs, open a test account for your company from here.
When you have registered the company account in testing, contact Integration Care (integrations@maventa.com) or your integration contact point to convert your account into a partner account. At the same time they will create a vendor_api_key
for you. This key is linked to your partner account will be used to identify your software interaction with the API.
After having the necessary API keys you can start building the integration. Follow feature specific guides for detailed instructions on sending, receiving, account & settings configuration and service activation.
Make sure you also understand how the testing environment works.
When integration is created and tested in the testing environment, next step is to move to production. To get the necessary keys follow the same process as in testing.
First create a regular account for your company in production from here. After that contact Integration Care (integrations@maventa.com) or your integration contact point to change the account to partner and create the vendor_api_key
.
When can the integration be taken to production
Before moving to production, it is good to check that the basic operations around the integration are working. If possible, AutoInvoice likes to organise a short test/demo session with the integrators to go over together
Company and service activation
Sending an invoice or a batch of invoices, to specific external recipients
Receiving
Extra
To use the API you need three different API keys, which are used in almost every request towards AutoInvoice API:
user_api_key
(identifies a single user, required in all interaction with API)company_uuid
(identifies a single company, required in all interaction with API)vendor_api_key
(identifies a partner, required in all partner interaction with API)User_api_key
and the company_uuid
are returned when you create new users and companies. The vendor_api_key
is given to you by your integration contact point from AutoInvoice.
In SOAP API, authentication is performed by providing all keys on each request.
In REST API, authentication is performed by using oauth2 standard tokens. See more at REST API Authentication.
When using the API keys, make sure they are written as is and ensure there are no extra blanks before or after the key to avoid errors.
The purpose of the vendor_api_key
is to identify the partner the customer and their transactions “belong” into. This is necessary for correct billing, reporting and support handling. It is very important that Partner and ERP integrations always use their own vendor_api_key
in all API calls. Actions performed without supplying vendor_api_key
will not be related to any vendor / partner. All actions submitted without specifying vendor_api_key
will be billed directly to related customer, based on general price list.
Usually, if a partner is developing multiple different ERP systems and wants to get their customer transactions sorted by ERP, a partner wants to have a different vendor_api_key
for each ERP. In general, this key is then ”hard-coded” into the software or at least hidden so that a user cannot change it.
Note also that the testing and production endpoints of the API use different API keys. API keys from testing will work on production and vice versa. Errors like USER NOT FOUND mean that the user_api_key
is wrong for that environment. Please, make sure you are using the correct API endpoint for your API key.
In Addition to the above mentioned 3 API keys, 2 extra keys are also supported. These keys allow ERPs to pass license information along through our system, onto billing systems. These keys are supported in all our API versions and are optional:
license_key
(License key of software making the call (255 characters max) From systems integrated to VLS this is the activation key)license_meta
(License metadata in JSON string format. license_meta parameter will be stored in a TEXT database field (65535 characters); if the JSON string exceeds that size, it will be cut and inconsistent data will be stored){
"licensing":"Some License",
"erp_name":"My ERP",
"erp_version":"1.0",
"erp_user":"Some User"
}
In the testing server, electronic, email and print sends outside AutoInvoice are only simulated, but internal sends work as in the production environment. Also all the notification emails related to account management and error handling are sent out to the real recipients (e.g. do not use something like test@test.com since that domain really exists meaning that the e-mail address might also exist). Note! If there is a need to test the invoice sending via email route for a real recipient please contact us or support@maventa.com and we can enable it for a specific account.
It is also good to note, that the testing environment is also used for internal testing, which means that it can differ from the production environment from time to time. The database of the testing server might be unavailable at times, and the server may be emptied without notice. Also for data privacy do not use real/production data in the testing environment.
APIs to use: SOAP API or REST API
Invoices are sent by providing an XML file and specifying other necessary data as parameters on the API call. After the send you will get an ID that can be used to monitor invoice delivery.
You can use the same functionality to send invoices based on your preference either using SOAP or REST API.
To send an invoice make sure you have:
See more information by opening the guides for
How invoice gets delivered, how to give the delivery address and look up invoice recipients.
What are the supported XML formats and attachment types, how invoice images and validation are handled.
How to send an invoice. What are the possible invoice statuses, how to use webhooks, resend and handle errors.
Finvoice format specific handling.
APIs to use: SOAP API or REST API
Invoices are received first to the customer’s company account in Maventa where they are downloaded to the receiving financial system. In order to start receiving, the company needs to first activate the receiving setting.
You can select to receive the invoices based on preference either through SOAP or REST API. The functionality is the same in both.
To receive an invoice make sure you have
Note! Receiving can be activated while registering the company account, but company needs to be verified before they actually can receive invoices. If the receiving was activated, invoice receiving will automatically be enabled after the company gets verified.
See more information by opening the guides for Listing and downloading invoices and Fraud reporting.
Recommended routine for invoice receiving - How to get information of new incoming invoices in AutoInvoice and download them into your system.
To work on preventing invoice fraud, AutoInvoice supports functionality to report us receiving of suspected fraudulent invoices. See here how to add the reporting functionality into your system to give the users an easy way to do reports. To get notifications on reported companies and other useful information for invoice handling see also more on integration to Detect service.
API to use: SOAP API or REST API
All companies using AutoInvoice have an own account that is registered with unique business ID and company details. After registration company settings can be configured, including activation of different services and networks. Before account is ready to be used fully, it needs to be in verified state to ensure customer authentication process has been completed.
Company accounts will always be linked to at least one user. Users are created based on an email address. The user can be a real user or a technical/API user only. This gives possibility to create the user set up in a very flexible way, taking into account the integration needs.
In company and user management note that:
company_uuid
user_api_key
Open and verify company accounts, configure settings, different account types
Create users, manage user settings and roles
Take into use different services and networks enabled by AutoInvoice. Select the services that you want to include in your integration and check here the service specific guides for implementation instructions.
Send invoices to consumers either into their net bank and/or mobile application. Use email or printing service as a fallback options for sending.
Invoices to consumers can be sent through AutoInvoice via email, print, or then as an e-invoices or direct payments to the consumer’s netbank.
For sending invoices to consumers via the email or print route you can force the sending using invoice sending method from either our SOAP or REST APIs.
Consumer e-invoicing (B2C) in Finland enables suppliers to send e-invoices to consumers’ personal netbanks and direct payments to consumers who do not use an online banking service. This service is only available for Finnish companies registered to AutoInvoice. If you need to send invoices from Finnish company to consumers outside Finland only option is to send them via email or by print.
In Finland B2C e-invoicing to netbank requires activation through bank messaging. Suppliers activate the consumer e-invoicing via Sender info SI-message and by that notify the consumers of the option to receive e-invoices from that supplier. Consumers inform that they want to receive e-invoices from the supplier with Receiver info RI-message. The ReceiverProposal message RP-message is used when the supplier asks for the consumer’s e-invoice address.
B2C e-laskutuksen avaus
Ensin yritykselle tulee luoda ja aktivoida AutoInvoice -tili. Aktivointipyynnön yhdeydessä lähtee myös pankkiverkon avauspyyntö pankille käsittelyyn. Pankkiverkon avauksessa kestää muutamia päiviä Danske Bankin kiire tilanteesta riippuen. Vasta kun pankkiverkko on auki, voi aloittaa kuluttajalaskutus sanomien lähettämisen. Alla on listattu molempien rajapintojen metodit tilin luontiin, aktivointiin, pankkiverkon avaukseen ja asetusten määrittelyyn:
REST rajapinta
Käyttäjän luonti: POST /v1/users
Tilin luonti: POST /v1/companies
Tilin aktivointi käyttöön sekä pankkiverkon avauspyynnön lähetys: POST /v1/companies/authorizations
Tilin aktivoinnin tilan kysely: GET /v1/companies/{id}/status
Pankkiverkon tilan kysely (status for the “BANK” network): GET /v1/company/profiles
Tilin asetusten määrittely: PATCH /v1/company/settings
Tilin asetusten tarkastelu: GET /v1/company/settings
SOAP rajapinta
Tilin luonti: register_with_password
Tilin aktivointi käyttöön sekä pankkiverkon avauspyynnön lähetys: authorize_companies
Tilin aktivoinnin tilan kysely: company_auth_status
Tilin asetusten määrittely configure_company
Tilin asetusten tarkastelu (bank_send kertoo pankkiverkon tilan) show_company_configuration
Uuden käyttäjän lisääminen tilille user_create_e
Uusi kuluttajaverkkolaskuja lähettävä asiakas
Luodaan ADD (uusi laskuttajailmoitus) tyyppinen SI-sanoma, joka lähetetään APIn yli joko käyttäen SOAP tai REST rajapintaa (metodit lähetykseen lueteltuna alempana). Täältä löytyy sivu, jolla voi muodostaa laskuttajailmoituksen eri sanomia. Tässä linkki ilmoittamispalvelun soveltamisohjeeseen, josta löytyy sanomien tarkemmat kuvaukset.
Myös RP-sanomat voit lähettää samalla metodilla.
SI-sanoman tilan pollaus voidaan käyttää metodia. Huom! SI-sanoman liikkumiseen operaattorin ja pankin välillä saattaa kestää useampi pvä, jopa 5 päivää. Sanomat ovat tilassa “ok” heti lähetyksen jälkeen ja jos tila ei muutu viiden päivän sisään virheeseen (ERROR) voi sanomien olettaa olevan ok. Myös se että RI sanomia tulee tilille, kertoo siitä että SI sanomat ovat ok.
Kun kuluttaja on valinnut yrityksen laskuttajakseen, palautuu RI-sanoma. Saapuneet RI-sanomat ensin listataan, jonka jälkeen sanomat voi ladata yksitellen listauksessa palautuneiden id tietojen perusteella.
REST rajapinta
Sanomien lähetys (SI, RP): POST /v1/fi_bank_messages
SI ja RP sanomien tilan pollaus: GET /v1/fi_bank_messages/{id}
Saapuneiden RI sanomien id listaus: GET /v1/fi_bank_messages/ri_messages
Yksittäisen RI sanoman lataus id:n perusteella: GET /v1/fi_bank_messages/ri_messages/{id}
SOAP rajapinta
Sanomien lähetys (SI, RP): message_send
SI ja RP sanomien tilan pollaus: message_status
Saapuneiden RI sanomien listaus: ri_message_list
Yksittäisen RI sanoman lataus id:n perusteella: ri_message_show
Asiakas jolla on kuluttajalaskutus käytössä jo toisen operaattorin kautta
Tehdään CHANGE-sanoma, jolla sopimus siirretään vanhalta operaattorilta Maventalle. CHANGE-sanoman saa tehtyä näppärästi olemassa olevan ADD-sanoman pohjalta. CHANGE-Sanoma lähetetään vanhaa yhteyttä pitkin eli vanhan operaattorin kautta pankeille.
Jos myös ERP järjestelmä vaihtuu, kannattaa myös huolehtia siitä, että asiakas saa jotenkin siirrettyä RI-sanomat (tai ainakin niiden tiedot) vanhasta järjestelmästään uuteen järjestelmään. Kun sopimus siirtyy vanhalta operaattorilta AutoInvoice:lle CHANGE -sanomalla, siirtyvät RI-sanomien sopimukset uudelle operaattorille, mutta itse tiedostot eivät. Uudelta operaattorilta näkee siis vain ne uudet RI-sanoma tiedostot, jotka kuluttajat tekevät sen jälkeen kun sopimus on siirretty.
Voitte halutessanne lähettää täysin saman CHANGE sanoman myös AutoInvoice tililtä kaikille pankeille, jotta tiedostot jäävät AutoInvoice -tilille talteen mahdollisia tulevaisuuden muutostarpeita varten.
Uudet RI-sanomat saapuvat jatkossa asiakkaan Maventa tilille, ja näiden lataus onnistuu APIn yli samoilla metodeilla kuin edellisessä tapauksessa (kts. kohta 3.)
There are currently two types of messages supported by AutoInvoice and needed for opening the service and to setting up the consumer e-invoicing, SI-messages and RI-messages. Prerequirement for using the consumer e-invoicing is to have the bank connection activated for the supplier.
In briefly:
SI-message (Sender info) is a notification to the banking system whereby the supplier notifies banks and informs consumers of its readiness to send consumer e-invoices and direct payments. It could be considered as a consumer e-invoicing agreement between the supplier and the bank.
To make a new agreement SI-message with MessageActionCode ADD is sent through AutoInvoice API to each bank the supplier wants to use for consumer e-invoicing. After sending you can poll the status of the sent messages. For SI messages our system shows OK immediately when the message has been sent OK to the operator bank. Between the banks B2C messages can travel with delay up to 1-4 banking days so keep in mind that possible error messages can arrive even after a week. When all is ok new RI-messages will start to flow in.
If the message fails on the bank side you will get an error. In case SI-message is in error state, you can get the errors by first listing error ids and then viewing the error message.
If there is a need to change or add some information for the agreement it can be done by sending a SI-message with the type CHANGE (e.g. when bank account information is changed or new account needs to be added, or if service provider has changed). Supplier agreement can be deleted by sending SI-message with the type DELETE. This will also delete all the consumer agreements (RI-messages) linked to this supplier agreement.
Implementation guidelines for creating the SI-messages and a tool for creating messages can be found from Finance Finland’s webpage
Note! Since our B2CFI traffic goes through our intermediator bank, Danske Bank, SI-message must have DABAFIHH defined as a sender operator code!
SI-messages (and RP-messages) can also be sent through our user interface (B2C messages -> Sent messages). The messages can be sent separately as one message per file or then all messages in one file. The latter option is something that you will get when creating the messages using FKL’s tool that can be found from the link above.
REST
To send messages (SI, RP): POST /v1/fi_bank_messages
To poll the status of sent message: GET /v1/fi_bank_messages/{id}
To list error message ids: GET /v1/fi_bank_messages/error_messages
To download a specific error message: GET /v1/fi_bank_messages/error_messages/{id}
SOAP
To send messages (SI and RP): message_send
To poll the status of sent message use: message_status
To list error message ids: error_message_list
To download a specific error message: error_message_show
Billing Subject
Consumer billing includes mandatory billing subject code (PaymentInstructionIdentifier) which is an identifier specified by the sender in the SI-message. Billing subject code is used to identify the reason for payment. Same supplier can have multiple SI-messages with different billing subject. When sending consumer e-invoices this same billing subject code needs to be given in the invoice XML. In Finvoice the billing subject is given in the optional EpiPaymentInstructionID field and in TEAPPSXML description, the corresponding element is HEADER / PAYMENT_INSTRUCTION_IDENTIFIER.
To get this reason for payment to be visualised for the consumers in their netbank or web payment services you will need to specify it in SellerInvoiceTypeText element and with all language code (FI, SE, EN).
<SellerInvoiceDetails>
<PaymentInstructionIdentifier>Vuokra</PaymentInstructionIdentifier>
<SellerInstructionFreeText LanguageCode="FI">Anna viimeisimmän laskun viitenumero </SellerInstructionFreeText>
<SellerInstructionFreeText LanguageCode="SV">Ge den senaste fakturans referensnummer </SellerInstructionFreeText>
<SellerInstructionFreeText LanguageCode="EN">Enter the reference number </SellerInstructionFreeText>
<SellerInvoiceTypeDetails>
<SellerInvoiceTypeText LanguageCode="FI">Vuokra lasku</SellerInvoiceTypeText>
<SellerInvoiceIdentifierText LanguageCode="FI" SellerInvoiceIdentifierType="01">Viitenumero</SellerInvoiceIdentifierText>
</SellerInvoiceTypeDetails>
<SellerServiceCode>01</SellerServiceCode>
</SellerInvoiceDetails>
Bank account information
Supplier’s bank account information is given in the SellerAccountDetails element in SI-message. Bank account numbers must be in IBAN format and supplier needs to define all the account numbers to be used in the consumer e-invoicing. When sending consumer e-invoices the IBAN given in the invoice must match to at least one IBAN given in the SI-message.
List of Finnish banks supporting consumer e-invoicing. We recommend to send SI-message to each of these banks:
Bank Identifier Code | Bank name |
---|---|
AABAFI22 | Ålandsbanken |
DABAFIHH | Danske Bank |
HANDFIHH | Handelsbanken |
HELSFIHH | Aktia |
ITELFIHH | Säästöpankit, Oma Säästöpankki |
NDEAFIHH | Nordea Pankki |
OKOYFIHH | OP-Pohjola-ryhmä |
POPFFI22 | POP Pankit |
SBANFIHH | S-Pankki |
RI-messages (Receiver info) can be considered as consumer e-invoicing agreements between the consumer and the supplier and they are always linked to the existing SI-message. There will be as many RI-messages as there are consumers using that particular bank and would like to have the e-invoicing with the supplier in question.
RI-messages with MessageActionCode ADD will be sent to the supplier when a new consumer chooses the supplier as their e-invoicer from their netbank. If a consumer’s information is changed, RI-message with the type CHANGE will be sent to the supplier and if a consumer wants to end the consumer agreement with the supplier RI-message with the type DELETE will be sent. It’s recommended to keep your own consumer register on the ERP side that has the updated status for each RI-messages. We recommend to list and download all the new RI-messages daily and then update your consumer register accordingly. If you send an e-invoice and get a sending error that the consumer agreement is not active, poll for the RI messages, there should be the type delete message for that consumer.
REST
To list received RI-messages: GET /v1/fi_bank_messages/ri_messages
To download RI-message: GET /v1/fi_bank_messages/ri_messages/{id}
To delete RI-message (file) from AutoInvoice account (note! Use this only after you have downloaded the messages to your ERP, deletion cannot be undone): DELETE /v1/fi_bank_messages/ri_messages/{id}
SOAP
To list received RI-messages: ri_message_list
To download RI-message: ri_message_show
To delete RI-message from AutoInvoice account (note! Use this only after you have downloaded the messages to your ERP): ri_message_delete
Handy tip for testing: You can also send RI-messages to your own test account using the same method for sending SI-messages. You can both send and download RI-messages yourself to verify that the integration is working before going to production.
RP-message (Receiver Proposal message) is used when the supplier asks for the consumer’s e-invoice address before e-invoices can be sent. When a consumer accepts the proposal, a RI-message is sent to the supplier. RP-message is a way to get more consumers to take the e-invoicing into use.
• The supplier and the consumer in question have agreed that the supplier requests the e-invoicing address with an RP message
• Supplier has consumer e-invoicing agreement with the banks (SI-messages are sent and ok)
• The PaymentInstructionIdentifier field has the same data content in the RP as it does in the SI-message
NOTE! If the Customer has not reacted within 30 calendar days, the Bank deletes the RP-message from the consumer’s netbank. The deletion is not in any way notified with an ack message.
Implementation guidelines for creating the RP-messages and more information for the process can be found from Finance Finland’s webpage
Consumer e-invoicing can be deactivated by sending SI-messages with the type DELETE. This will delete the supplier agreements with the banks and remove the supplier from the list of companies providing consumer e-invoicing from the netbanks. Deactivation and deleting of SI-messages will also delete all the consumer agreements (RI-messages) linked to the supplier agreement in question. In case there is only a need to change the service provider or other information on the SI-messages there is no need to delete the existing agreements but instead the information can be changed easily by sending SI-messages with the type CHANGE.
In case the service provider will be changed you will need to send SI-messages with the type CHANGE from the old service provider and with those SI-messages inform which will be the new service provider. In this way all the existing consumer agreements (RI-messages) will follow along to the new service provider and there is no changes needed to be done by the consumers. Note! It might take few banking days for the SI messages to travel to each bank and to get validated so you should be prepared for the possible errors to arrive few days after the sending of the messages. This means that you should not close down the old connection immidiately but instead you should wait for couple of days (5 days should be enough). Only after those few days if no errors arrive you can close the old connection. Note! RI-message files from the old service provider are not moved to the new service provider in any automated way. You will need to make sure you have downloaded the files or saved the information to your end.
InvoiceSenderAddress
and InvoiceSenderIntermediatorAddress
should have the current sender information and with NewInvoiceSenderAddress
and NewInvoiceSenderIntermediatorAddress
you can inform the new sender information:
<InvoiceSenderInformationDetails>
<InvoiceSenderAddress>003712345678</InvoiceSenderAddress>
<InvoiceSenderIntermediatorAddress>DABAFIHH</InvoiceSenderIntermediatorAddress>
<NewInvoiceSenderAddress>003787654321</NewInvoiceSenderAddress>
<NewInvoiceSenderIntermediatorAddress>NDEAFIHH</NewInvoiceSenderIntermediatorAddress>
</InvoiceSenderInformationDetails>
Invoices can be sent through AutoInvoice consumers via direct debit (avtaleguiro), eFaktura, Vipps, DPI, e-mail and print. The invoice can be specificed to go a specific route like efaktura or it can be specified to try all routes in a predefined order.
In order to send invoices to consumer the main vendor agreements needs to be signed. The agreement capture, and the direct debit service cant be activated at the same time or after the vendor agreement is active.
Before you can send any invoices B2C through AutoInvoice, or enable any of the extra features, the main Vendor agreement must be activated. Only a norweigian company account in AutoInvoice can send invoices to consumers and be able to activate the business to consumer vendor agreement.
Note that when the agreement is activated the supplier gives consent for visma to delete any old agreement they might to currently send eFaktura, and fetch all their existing consumer agreements.
This can be done either through the API or UI. API method:
Note! This feature will be depricated by Nets december 1st 2021.
Agreement capture (Avtalefangst) is a bank feature where the consumer gets a suggestion to enter into an e-invoice agreement with the vendor, when paying the paper invoice in the nettbank. By using this feature the vendor will reach a high number of consumer e-invoice agreements in the fastest way possible. This is an easy, fast, and user friendly way to enter into a consumer - vendor agreement. The consumer does not need to know their e-invoice reference since that is reported in the KID number. This feature is dependent on the issuer having an OCR agreement with their bank.
How it works:
When the issuer of the invoice reports in their KID, bank account number, and the e-invoice reference position in the KID to Nets through AutoInvoice, then Nets creates an agreement capture rule in the bank. This works so that when the consumer gets the paper invoice and punches in the data manually in the online bank, the bank recognizes the bank account and the KID and identifies that there is an agreement capture in place. When this happens the consumer will get a questions like “This supplier can send you e-invoice in the future. Would you like to accept?”. When the consumer accepts then the bank creates the consumer e-invoice agreement based on the e-invoice reference that has previously been reported and is located in the KID number. That information is then fetched by AutoInvoice and is entered into the CV registry and the next invoice will be sent directly to the netbank as an eFaktura.
This can be enabled through the API or the UI API method:
Note! In pilot mode
Through AutoInvoice it is possible to send an invoice and AutoInvoice will route it is a direct debit invoice to Nets if there is an agreement active, and there is an active consumer mandate. The supplier does not need to create a deduction file, that is done based on the invoice at Nets.
To get started the supplier needs a direct debit agreement (avtalegiro) with their bank. This is a manual process today that is handled outside of Visma. In the agreement with the bank the supplier must specify customer ID = 229221. This is to identify the direct debit feature with visma.
If the supplier already have an active agreement with their bank they can activate direct debit through AutoInvoice and we configure the agreement with Nets.
AutoInvoice needs the following information from the company:
Note! If the supplier already has an active agreement and are already sending deduction files through another route, activation in AutoInvoice does not stop the old route like it does for eFaktura to netbank. Meaning they can send invoice combo through us and deduction file through old channel and it will not be stopped at Nets. However, the mandates can only be fetched from Nets by Visma.
Agreement can be activated through the API or UI. API method:
Note! In pilot mode. Requires a seperat activation which can be done by contacting AutoInvoice team.
Instead of the supplier creats a deduction file and sends to Nets, or through another channel like AutoPay, the supplier can instead send the invoice via AutoInvoice and the deduction file is created based on that invoice. The notification (eFaktura, e-mail or print) is also handled and sent out by AutoInvoice. Meaning the supplier does not have to relate to two different channels. Mandates will be collected and stored in AutoInvoice.
Prerequisites
Notification on upcoming Direct Debit
Its the consumers choice if they want to be notified on an upcoming direct debit and they make that choice when they en they enter into an atg agreement with their supplier. Its either a yes or no to notification, not a how. As a priority the notification will always go as efaktura if they have that activated, if not it can go as e-mail or print. IF the consumer does not want to be notified AutoInvoice only sends the invoice as a direct debit with no notification.
Notification via eFaktura
If the consumer has efaktura activated, either through Y2A or with a direct agreement with the supplier, the notification will always be sent to netbank. It will be shown as an invoice with a direct debit and will not be possible for the consumer to pay.
Notification via e-mail
If the consumer wants to be notified, and does not have eFaktura, then the notification will be sent as e-mail as long as there is an address available. The text in the e-mail specifies that this is a direct debit agreement to eliminate the risk of it getting payed twice.
Notification via print
If the consumer wants to be notified, and does not have eFaktura or any e-mail address, then the notification will be sent to print. AutoInvoice will add a coversheet to the invoice where it specifies that this is a direct debit and should not be payed.
If there is no active mandate the invoice will be routed to the next specified route.
When the vendor agreement is active the first invoice can be sent. If the supplier has moved over from an other solution, the existing efaktura consumer agreements will be fetched to Autoinvoice when the vendor agreement is active. In order to send an invoice as eFaktura the receiver must have a consumer agreement directly with the supplier, or be registered in the “Yes to all” registry with Nets (JTTA).
Consumer vendor registry:
Note! Unique consumer agreements with one supplier will be depricated December 1st 2021 and to be replaced enteirly with JTTA registry.
The consumer vendor registry stores all the consumer agreements, or the consumer eFaktura reference in various states. A consumer’s eFaktura reference is what identifies the consumer with the vendor, and it works as a connection between the consumer and their invoices. It is the central role in transporting B2C invoices between the vendor and the consumer as eFaktura.
There are 4 scenarios where consumer agreements are added into the CV-Registry:
When a customer activates the B2CNO vendor agreement in AutoInvoice the existing agreement that they might have will be automatically deactivated and all of their existing consumer agreements that are active will be copied from Nets and enteres into the customers CV-Registry.
AutoInvoice sends out a consumer request requesting the consumer to activate an e-invoice agreement with this vendor. Consumer does this by following the link in the e-mail/SMS and accepting through BankID. Agreement then gets copied from Nets to AutoInvoice CV-Registry.
Agreement capture with OCR (Avtalefangst med OCR). If agreement capture is active, its a seperat activation, then when consumer pays an invoice in the nettbank it will trigger a question to the consumer if they want to receive an eFaktura next time. This consumer agreements is then fetched and seen in the suppliers consumer - vendor registry.
When the supplier enters into the B2CNO vendor agreement with AutoInvoice, they will automatically be searchable in all netbanks. A consumer can then search for the vendor in their nettbank, and activate their e-invoice agreement automatically.
When the vendor sends an invoice to a consumer with an existing e-invoice agreement the invoice will be directly transported to Nets and then to the consumers netbank. Note the following:
API methods:
Yes to all:
Yes to all, or Ja takk til Alle (JTTA), is used to send an eFaktura to Nets if there is no active consumer agreement in place. Instead of an efaktura reference, the consumer is identified using a eFaktura identifier. With an e-invoice reference there is a direct connection between the vendor and the consumer, but an e-invoice identifier is more general that all vendors can use to send an e-invoice to that consumer. The consumer activates this by logging into their nettbank and activates yes to all, meaning that the consumer accepts e-invoices from all vendors that are able to send e-invoice. If this is activated then there is no need for the supplier to send out any consumer requests and the first invoice can be sent directly to the consumers nettbank.
Note! AutoInvoice does a check towards Consumer Vendor Registry (CVR) before doing a lookup towards Y2A. If there is an active agreement in CVR then there will be no lookup towards Y2A.
When the consumer activates Y2A in their netbank the banks pushes certain information to Nets Y2A registry that Autoinvoice uses for lookup to get the consumers e-invoice identifier. Today it is mandatory for all banks to push Social Security Number (SSN) to the registry but other aliasas include e-mail, phone, address, postal code, first name, and last name. On the basis of these AutoInvoice does a look up towards the registry. If there is a hit then we forward the invoice directly to the netbank.
AutoInvoice does a lookup with the following information (Note that these can change):
If AutoInvoice cannot find an active eFaktura reference, or a eFaktura identifier, the invoice will be routed to the next route.
AutoInvoice will check towards Vipps based on mobile number and get back a token if the consumer has activated Y2A either in their netbank or in their vipps application. If the consumer has not activated Y2A the invoice will not be sent to vipps.
Requirements on consumer to receive an invoice in Vipps:
The invoice will then be sent directly to Vipps and because of the merge between Nets and Vipps eFaktura, the invoice will also be visible in the nettbank. Invoice can be payed in either and status updates in both. The same is true the other way around, if the invoice is sent to nettbank, the invoice will also be shown in Vipps.
However the following scenarios need to be taken into account:
KID number: Supplier does not have to send KID when sending invoices to Vipps. If the sender does not have OCR agreement with their bank, and does send KID number then the payment will not go through.
Fallback settings: There is no fallback setting to sending to Vipps. Instead when using the operator code B2C_VIPPS and B2CNO the invoice automatically gets sent to fallback e-mail and print through route_order if the recipient has not activated Vipps eFaktura.
Creditnotes: Not supported. Invoices can be sent to Vipps and invoices with total amount = 0.
Direct debit invoices: Direct debit invoices, or avtalegiro + efaktura combination invoices, are not supported through Vipps.
Attachments and invoice image: Attachments are supported through visma document hotel. Limitations are the same as to print. AutoInvoice send a link to Visma document hotel where we show only PDFs. If the invoice contains other formats like .png we do not pass these on to consumer.
Status:
When sending an invoice to Vipps the invoice is then validated and been sent to the consumers application and is visible under the payment section in the application. This is done in about 15 minutes. Status with Vipps is then pending and status with AutoInvoice is sent. Sent status is the final status of this invoice. There it will stay until 14 days after due date then it is removed from the application.
There is no way to know if the consumers has payed the invoice. Vipps does not collect the information from the banks.
Explanations of the states in Vipps: https://github.com/vippsas/vipps-invoice-api/blob/master/vipps-invoice-api.md#detailed-information-about-invoice-states-and-transitions
Note: ERPs that use invoice_create method can not send invoices to VIPPS because the phone number could not be saved to Database
AutoInvoice can route an invoice to DPI, which is used only by municipalities (Enterprise). When sending to DPI the payload must contain a social security number (personnummer) in a .aix file. The SSN will be used to check the consumer against the Kontakt og Reservasjonsregistret (KRR). In KRR the consumer has choosed if they want to receive invoices or not to their DPI account, and if that account is in either eBoks och DigiPost.
In order to send to DPI or send with SSN contact partner support or AutoInvoice team.
If all is OK the invoice will be routed to DPI..
…
Invoices to consumers can be sent through AutoInvoice as e-invoices to the consumer’s netbank, Kivra or via email and print. Distribution is handled by our partner, Compello.
In Sweden also companies can receives invoices through this channel as a company can have an SSN (social security number) as their organization number.
B2CSE solution is currently under piloting. Integration details will be added later. If you are interested in hearing more about our B2CSE solution, please contact us through support@maventa.com.
Send and receive electronic invoices and other trading documents in an international Peppol network.
Peppol eases the trade between suppliers and buyers by providing a standardised way for exchanging trading documents electronically within countries and cross-border. Sending and receiving between recipients takes place over Peppol Access Points that connect the buyers and suppliers to the network.
AutoInvoice is one of the cerfified Peppol Access Points. This means that when you are integrated to AutoInvoice you can easily provide connection to Peppol to your customers.
0192
. For Norwegian company whose organisation number would be 123456789
Peppol address would be 0192:123456789
APIs to use REST API - Invoices and other documents SOAP API - Enable/disable, invoices only
Note that using different Access Points for different document types is possible, e.g. one to receive invoices, another to receive orders, but company cannot register the same document type to different Access Points.
If the company is already registerd to receive invoices through another Access Point than AutoInvoice this registration needs to be removed by the old Access Point before AutoInvoice can do the registration
To create registration to Peppol
REST API Call POST /v1/company/profiles
INVOICE_AND_CREDIT_NOTE
PEPPOL
{
"profiles": [
"INVOICE_AND_CREDIT_NOTE"
],
"profile_version": null,
"endpoint_id": "003712345678",
"scheme": "0037",
"network": "PEPPOL"
}
SOAP API Call enable_operator with enabled=true
INVOICE_AND_CREDIT_NOTE
AutoInvoice creates the registration with the following identifiers (schemes)
0192
)0037
)0007
)9902
)0106
or 9944
- depending which is used to register company account to AutoInvoice)If you want to register a participant outside of these countries or with a different identifier please contact AutoInvoice.
REST API
REST API
To follow up when the registration has been succesfully completed you can register a webhook. Use the event type NETWORKS to get notification of all changes in the registration statuses.
To remove registration from Peppol network
REST API
SOAP API
enabled=false
INVOICE_AND_CREDIT_NOTE
Use print service to print the invoice and deliver it by post to recipients who cannot receive electronic invoices. Define the settings based on your customer needs.
Print can be used as the option to deliver the invoice if the invoice is not possible to send as an e-invoice or email invoice.
The requirements to send the invoice by print are that:
See the used price list for print related transaction costs.
To be able to use the print as a delivery option for the invoices, the printing service needs to be activated separately for a company account. Activation can be done through the API or UI.
To activate the print service use API method PATCH /v1/company/setting. Under send_invoice_print
block set the parameter enabled
to true
.
To disable the printing service set the enabled
parameter to false
.
To check if the printing is active (or disabled) use use GET /v1/company/settings. Under send_invoice_print
block the parameter enabled
tells if the service is active (true
) or not active/disabled (false
).
To activate the print service call API method configure_company and set parameter print_and_send_request
to 1
.
To disable the printing service set the print_and_send_request
to 0
.
To check if the printing service is active use Show_company_configuration method and parameter print_and_send_enabled
(true / false)
Invoices sent via print service will by default use AutoInvoice generated invoice image template. This template is optimized for effective handling and it fits perfectly to the envelope used by the printing service provider. Customers can customize the template by adding their company logo to the invoice template (via UI or API).
Examples of AutoInvoice templates here.
There is also an option to use the customer’s own invoice image for the prints (via UI or API). A cover sheet with address details will be added by AutoInvoice to all printed invoices with the customer’s own image and the cover sheet is debited as an extra page. The reason for the cover sheet is to make sure that the address details fits to the envelope.
Prints are always double-sided if there is more than one page.
To add a logo for an invoice image template created by AutoInvoice use PATCH /v1/company/setting and parameter logos
. Note! Most image formats are supported but not PDF. JPEG or PNG is preferred. PNG with transparency is not supported.
To remove the uploaded logo use the same above mentioned method method but
To use your own image with prints, use PATCH /v1/company/setting. Under send_invoice_print
block set the parameter use_own_pdf
to true
. To stop using your own image, set the use_own_pdf
parameter to false
To add a logo for an invoice image template created by AutoInvoice use update_logo API method
To remove the uploaded logo use remove_logo method
To use your own image with prints, use configure_company method and set parameter print_and_send_own_pdf
to true
.
Note that when using your own template you should be careful and take technical restrictions in consideration.
All files must be of PDF format (or have the same content requirements) for it to be printed correctly. That means that the file cannot contain dynamic components and that all fonts, images and others are included in the file (ie the files should be 100% “self-contained”). All new customers must test their PDF files (all variants of fonts, images, etc.) to verify that the PDFs can be handled. If the PDF contains graphics, such as logos, charts, and other images, they must be of good quality.
See below for country-specific configuration options and requirements:
If you use your own invoice image make sure to familiarize youself with the PDF layout rules by Posti.
Addition to Posti as the mail distributor, there is also Jakeluyhtiö Suomi Oy (JYS) which have few additions to the Posti rules. Difference is the tracking barcodes they print on the invoice image, see the JYS rules merged with the Posti ones.
There is also an option to exclude the cover sheet from the prints. In that case the sender is not only responsible for making sure their invoice image meets the layout rules but also to make sure to follow the position requirements for the receiver’s address details so that those fit perfectly to the envelopes used in Finland. Contact support to confirm your layout and to enable this setting.
There is a possibility for customers to choose if they want their invoice images to be printed with colors or with black & white (via API or UI). The default setting is black & white. If the color printing is enabled, it will be billed based on the number of pages in a printed invoice, not based on the number of pages actually having colors.
To enable the color printing use PATCH /v1/company/setting method. Under send_invoice_print
block set the parameter color_scheme
to COLORED
To use only black & white set the parameter color_scheme
to BLACK_AND_WHITE
To enable the color printing use configure_company method and set print_and_send_color
parameter to true
.
Invoices that are sent to AutoInvoice before 24:00 will get printed, processed and enveloped during that night and handed over to the mail distributor next morning. Production does not take place during the weekends and holidays.
Mail distributors will deliver invoices to the receivers according to the chosen letter class.
There are two letter class options available for Finnish companies to choose from, economy and priority. Priority is the default one. Letter class can be changed via API or UI.
To change the letter class use PATCH /v1/company/setting method. Under send_invoice_print
block set the parameter letter_class
to PRIORITY
or ECONOMY
You can change the letter class using configure_company method and print_and_send_letter_class (1 = Priority, 0 = Economy) parameter.
The Finnish printing service uses two different envelope sizes. A smaller C5 envelope is used when there are up to 8 sheets in the invoice printed. When invoice has more than 8 sheets a bigger, more expensive, C4 size envelope is used. There are different billing actions for these two cases. As all the printed invoices are double-sided there needs to be more than 16 pages on an invoice for it to be more than 8 sheets, and to use the C4 envelope.
Separate PDF attachments are printed with following rules:
Note! There is an extra charge per page printed.
By default the printing of attachments is disabled for Finnish companies. This settings can be changed via API or UI.
If you wish to enable the printing of attachments you can do it by calling PATCH /v1/company/setting method. Under send_invoice_print
block set the parameter attachment_print
to true
. And to disable it again, set the parameter attachment_print
to false
If you wish to disable it you can do it by calling configure_company method and setting the parameter print_attachments to false (true = enabled, false = disabled)
When this setting is turned on every invoice that is printed using our PDF-tempate is automatically accompanied with instruction page which explains how your customer can receive invoices electronically instead of paper. Instruction page is free of charge for you.
To use the automatic e-instruction page call PATCH /v1/company/setting method. Under send_invoice_print
block set the parameter marketing_page
to “true”
To use the automatic e-instructions page call configure_company method with parameter marketing_on_invoice = true
OmaPosti is an application customer can use to receive letters electornically instead of the paper version. If OmaPosti account is found, the invoice will be scanned and re-directed there. If not found, the invoice goes to printing and as a letter to the recipient. Combination of receiver’s name and postal address is used to identify if the receiver has OmaPosti account. Also personal identification number is used as an identifier but it is highly recommended not to use such ids on invoices.
When customer’s own invoice image is used, a cover sheet with receiver’s address details is added by AutoInvoice to all printed invoices and it is debited as an extra page. The reason for the cover sheet is to make sure that the address details fits to the envelope. If you use your own PDF-template familiarize yourself with the PDF layout rules provided by the printing service provider.
All invoices are printed as black & white.
Invoices that are sent to AutoInvoice before 24:00 will get printed, processed and enveloped during that night and handed over to the mail distributor next morning. Production does not take place during the weekends and holidays. Mail distributors will deliver invoices to the receivers using Priority letter class.
Separate PDF attachments are printed with following rules:
Note! There is an extra charge per page printed.
By default the printing of attachments is enabled for Norwegian companies. This settings can be changed via API or UI.
If you wish to disable the printing of attachments you can do it by calling PATCH /v1/company/setting method. Under send_invoice_print
block set the parameter attachment_print
to false
. And to enable it again, set the parameter attachment_print
to true
If you wish to disable it you can do it by calling configure_company method and setting the parameter print_attachments to false (true = enabled, false = disabled).
When customer’s own invoice image is used, a cover sheet with receiver’s address details is added by AutoInvoice to all printed invoices and it is debited as an extra page. The reason for the cover sheet is to make sure that the address details fits to the envelope. See the PDF layout rules provided by the printing service provider.
The Swedish printing service uses two different envelope sizes. A smaller C5 envelope is used when there are up to 7 sheets in the invoice printed. When invoice has more than 7 sheets a bigger, more expensive, C4 size envelope is used. There are different billing actions for these two cases. As all the printed invoices are double-sided there needs to be more than 14 pages on an invoice for it to be more than 7 sheets, and to use the C4 envelope.
There is a possibility for customers to choose if they want their invoice images to be printed with colors or with black & white (via API or UI). The default setting is black & white. If the color printing is enabled, it will be billed based on the number of pages in a printed invoice, not based on the number of pages actually having colors.
To enable the color printing use PATCH /v1/company/setting method. Under send_invoice_print
block set the parameter color_scheme
to COLORED
To use only black & white set the parameter color_scheme
to BLACK_AND_WHITE
To enable the color printing use configure_company method and set print_and_send_color
parameter to true
.
Separate PDF attachments are printed with following rules:
If attachments exceed these limits, all the attachments are dropped and the sender will be notified via email. Invoice image is still printed.
Note! There is an extra charge per page printed.
By default the printing of attachments is enabled for Swedish companies. This settings can be changed via API or UI.
If you wish to disable the printing of attachments you can do it by calling PATCH /v1/company/setting method. Under send_invoice_print
block set the parameter attachment_print
to false
. And to enable it again, set the parameter attachment_print
to true
If you wish to disable the printing of attachments you can do it by calling configure_company method and setting the parameter print_attachments to false (true = enabled, false = disabled).
Invoices that are sent to AutoInvoice before 24:00 on workdays will get printed, enveloped and handed over to the mail distributor the next day. Production does not take place during the weekends and holidays. Mail distributors will deliver invoices to the receivers according to the chosen letter class. There are two letter class options available for Swedish companies, economy (B-post) and priority (A-post). Priority is the default value. (via UI or API). See the delivery schedule
To change the letter class use PATCH /v1/company/setting method. Under send_invoice_print
block set the parameter letter_class
to PRIORITY
or ECONOMY
You can change the letter class using configure_company method and print_and_send_letter_class (1 = Priority, 0 = Economy) parameter.
When customer’s own invoice image is used, a cover sheet with receiver’s address details is added by AutoInvoice to all printed invoices and it is debited as an extra page. The reason for the cover sheet is to make sure that the address details fits to the envelope. If you use your own PDF-template familiarize yourself with the PDF layout rules provided by the printing service provider.
All invoices are printed as black & white.
Separate attachments are not printed only the invoice image is. To get the attachments printed they must be merged with invoice image before being sent to AutoInvoice.
By default customer own invoice image is used for prints and a coversheet (with address information) will get added with no extra cost. If there is no image given AutoInvoice will generate one accroding to general templates.
Separate PDF attachments are printed with following rules:
Note! There is an extra charge per page printed.
By default the printing of attachments is enabled for Dutch companies. This settings can be changed via API or UI.
If you wish to disable the printing of attachments you can do it by calling PATCH /v1/company/setting method. Under send_invoice_print
block set the parameter attachment_print
to false
. And to enable it again, set the parameter attachment_print
to true
If you wish to disable it you can do it by calling configure_company method and setting the parameter print_attachments to false (true = enabled, false = disabled)
Invoices that are sent to AutoInvoice before 24:00 on workdays will get printed, enveloped and handed over to the mail distributor on the same day. Production does not take place during the weekends and holidays. Mail distributors will deliver invoices to the receivers according to the chosen letter class. There are two letter class options available for Dutch companies, economy and priority. Priority is the default value. (via UI or API).
To change the letter class use PATCH /v1/company/setting method. Under send_invoice_print
block set the parameter letter_class
to PRIORITY
or ECONOMY
You can change the letter class using configure_company method and print_and_send_letter_class (1 = Priority, 0 = Economy) parameter.
By default everything is printed with colors. Changing color printing setting does not have any effect on Dutch companies.
To close the print service, call configure_company method with parameter print_and_send_request = 0.
To reopen the service, just follow the steps in chapter Opening service. The print service is enabled immediately after activation, without approval needed.
Print service activation, closing and configuring the settings can all be done over the AutoInvoice UI. The print service settings can be found under Invoice sending settings.
Use AutoInvoice Direct Print API to send EPL and PDF files as letters through print service. The service is currently available in Finland only.
AutoInvoice Mass printing service (also known as Payslip) is a service that enables sending of EPL and PDF files as letters through the printing service in Finland. Service was initially build to send payslip material, but it can be used for sending any kind of letters, as long as the printing service rules are followed.
Payslip can be used either through the UI from address https://payslip.maventa.com (testing https://payslip-stage.maventa.com) or via HTTP API.
You need a separate user account for the Mass printing API in order to use it. You can open the account with an API call to https://payslip.maventa.com/register using existing vendor_api_key and company_uuid for AutoInvoice.
Key | Example | Description |
sw_api_key | d33e92be-a46b-4963-8ada-25452712e0a6 | Existing software API key from Maventa |
company_uuid | 99445728-5fd3-428a-96e1-ca0cab692276 | Existing company uuid from Maventa |
company_name | Test Company Oy | Name of the company |
user_email | test@yritys.fi | User email address that will be used as user name, needs to be unique! |
user_pw | secret1234 | Password for the user |
test_mode | 1 | 1 opens the account in test mode which means that material is not really send out. Note! Contact support to disable the test mode. 0 opens the account in production mode |
disable_notify_on_complete | 1 | 0 (default) user will get an email notification when material is printed successfully. |
The response code will always be a HTTP 200 and the response body is one of the following:
Value | Description |
“OK” | Successful registration, letters can be send and login works |
“ERROR: COMPANY UUID ALREADY REGISTERED” | Registration failed, company exists already in Payslip service |
“ERROR: USER EMAIL ALREADY REGISTERED” | Registration failed, user email exists already in Payslip service |
“ERROR: ONLY FINNISH COMPANIES ALLOWED” | Only Finnish companies allowed to register |
“ERROR: USER EMAIL INVALID” | Invalid email address |
“ERROR: INVALID VENDOR KEY” | Invalid software API key |
“ERROR: INVALID COMPANY UUID” | Invalid company uuid |
“ERROR: INVALID VALUES” | Company_name, user_email or user_pw empty |
“ERROR: REGISTRATION FAILED” | Most likely company name already exists in Payslip service. |
To send a letter to Mass printing service call the API endpoint payslip.maventa.com/input_public.
You need to give authentication using HTTP headers. You can give either:
USERNAME
and USERPW
with which you registered your Mass printing API accountCOMPANY-UUID
and USER-API-KEY
of your AutoInvoice accountKey | Example | Description |
version | MyOwnERP | Name of the software (and its version) making the sending. Makes problem solving easier |
filename | letters_2019_12.zip | Name of the ZIP package, should be unique |
file | RVBMMTExMzQ0O | Base64 encoded ZIP file content |
zipHash | 69a56b2b66d548d7b51f6dcc9003e90bafce2162 | SHA1 hash of ZIP content, will get check in server to make sure package came through as whole |
hash | 856697ad0cae67ec48f7627be4cef74feaa2f36b | SHA1 hash of EPL or PDF content, will get saved to server for duplicate prevention. Same hash key cannot be used for sending again |
document_type | PDFXML | PDFXML or EPL |
letter_class | economy | Economy or priority (default value). Letter class to use for sending |
sw_api_key | 5992955a-3b66-4439-94d1-a854a764da49 | Existing software API key from Maventa. Value given in sending call will override the one set for the Payslip company account in registration |
license_key | 1234-5678-MKSK-1234 | License key of software making the call (255 chars max) |
license_meta | License key for MyOwnERP | Additional information about the licensing system |
color_print | true | Color printinting true Black&White false (default value) |
duplex | true | Duplex printing for both sides of the letter. default is false |
The response code will be a HTTP 200 and the response body is one of the following or “401 Unauthorized” if authentication fails:
Value | Description |
“OK: sent_filename.zip” | Successful sending |
“ERROR: HASH VALUE DOES NOT MATCH” | Parameter zipHash does not match to the SHA1hash |
“ERROR: ERROR: DUPLICATE FILE” | Found file with parameter hash |
“ERROR: FILE TOO LARGE” | API allows max 10Mt files |
“ERROR: DOCUMENT TYPE UNSUPPORTED” | document_type is something else than EPL or PDFXML |
“ERROR: FILE IS NOT ZIP” | Parameter filename needs to be .zip |
“ERROR: ZIP FILE CONTAINS UNSUPPORTED FILES” | When sending EPL, allowed is only .epl file. When sending PDF, allowed is only .pdf files |
“ERROR: ONLY ONE EPL FILE ALLOWED IN ZIP” | Only one .epl is allowed per one sending |
“ERROR: ZIP FILE CORRUPTED” | Unzipping failed |
“ERROR: NO LETTERS FOUND” | No letter were found. EPL version used is not supported or no .pdf files found inside the zip file |
“ERROR: SINGLE XML REFERENCES MULTIPLE PDFS” | Single iPost-XML can only have reference to one PDF (XML to PDF 1-1 ratio) |
“ERROR: sent_filename.zip” | Unexpected error, sending failed. Contact our support for more information |
Finnish printing service uses two different envelope sizes. Smaller C5 envelope is used when there are up to 8 sheets in the printed document. When document has more than 8 sheets a bigger, more expensive, C4 size envelope is used. There are different billing actions for these two cases. In case documents are printed as duplex (double-sided) there needs to be more than 16 pages on an document for it to be more than 8 sheets and to end up in the C4 envelope.
All files must be of PDF format (or have the same content requirements) for it to be printed correctly. That means that the file cannot contain dynamic components and that all fonts, images and others are included in the file (ie the files should be 100% “self-contained”). All new customers must test their PDF files (all variants of fonts, images, etc.) to verify that the PDFs can be handled. If the PDF contains graphics, such as logos, charts, and other images, they must be of good quality.
<?xml version="1.0" encoding="ISO-8859-1"?>
<lb:LetterBundle schemaVersion="v0x4" senderFileId="FileD1" xmlns:lb="urn:itella-letterbundle-v0x4" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:itella-letterbundle-v0x4 LetterBundle_V0x4.xsd">
<lb:Bundle senderBundleId="">
<lb:BundleCommon creationDate="2020-06-24T13:17:00.0Z" isTest="false">
<lb:Sender companyName="Your company Oy" contact="" contactPerson="Maventa Support" email="support@maventa.com" phoneNumber="010-5058474" ovtID="003721291126">
<lb:SenderAddress>
<lb:Eu1 name="Your company Oy" address="PL 000" postalCode="00101" city="Helsinki" countryCode="FI"/>
</lb:SenderAddress>
</lb:Sender>
<lb:StdBundleProcessing customerId="" departmentClassification="false" electronicArchiving="T" envelope="S" fileFormat="0" isDuplex="true" letterClass="2" paper="0" password="" serviceFunction="0"/>
<lb:ExternalFile fileName="sent_filename.pdf" format="PDF" senderFileId="wm_0c5c09e0-03d3-4340-bb6b-0c3c14be7f42">
<lb:CheckSum type="MD5" value="nnnnnnnnnnnnn"/>
</lb:ExternalFile>
</lb:BundleCommon>
<lb:Letter senderLetterId="LetterID1">
<lb:LetterMeta>
<lb:Location pages="1" startPage="1"/>
<lb:Recipient>
<lb:Address>
<lb:Eu1 address="Kotikatu 1" city="Helsinki" countryCode="FI" name="Asiakas Anssi" postalCode="01001"/>
</lb:Address>
</lb:Recipient>
</lb:LetterMeta>
</lb:Letter>
</lb:Bundle>
</lb:LetterBundle>
Latest instructions for the letter layout
Receiver information should be marked as clearly as possible with the following order to make sure machine readability:
To check the status of the sent package, use https://payslip.maventa.com/file_status. API call contains HTTP-header where user name and password are given with USERNAME and USERPW parameters. In addition a GET for giving the sent file name with filename parameter.
You need to give authentication using HTTP headers. You can give either:
USERNAME
and USERPW
with which you registered your Mass printing API accountCOMPANY-UUID
and USER-API-KEY
of your AutoInvoice accountKey | Example | Description |
filename | sent_filename.zip | Name of your ZIP package |
Value | Description |
“DONE” | Package is processed and sent successfully |
“PENDING” | Package is still in sending process |
“ERROR” | Sending of the package has failed (in these cases our support will get notified and they will contact the sender with more detailed reason for error) |
“ERROR: No file found” | No file found with the given filename |
PDF material that has been sent to AutoInvoice before 24:00 will get printed during the same night and sent to post office next morning. Post will deliver material to the receivers according to the chosen letter class.
If you wish to close the service please contact AutoInvoice support.
Activate AutoInvoice Receivables Management Service to accelerate cash flow and free resources from manual work. The service handles reminders, payment monitoring, payment allocation, and debt collection after the invoice has been sent. Note! Only available for Finnish companies.
The Receivables Management service handles payment monitoring, payment allocation, sending of reminders, and debt collection on behalf of the company. Company only needs to create and send the invoice as normally (including the error handling) and the service does the rest. The service is provided by Visma Financial Solutions Oy through AutoInvoice and it is included in the AutoInvoice service with no additional costs for using it. Only costs there might be are related to the debt collection process in later phases and if assignments are cancelled (see price list).
New things in planning
SEND ERROR (REASON: RECEIVABLES-SERVICE: Postal code for CITY_NAME xxxxxx not found (code #5))
and won’t get sent out to the receiver. You will need to create a new invoice with corrected address and send it again.SEND ERROR (REASON: RECEIVABLES-SERVICE: The due date for the invoice is within three (3) days or has already passed (code #13))
and won’t get sent out to the receiver. You will need to create a new invoice with proper due date and send it again.(SEND ERROR (REASON: RECEIVABLES-SERVICE: Invoice already exists (code #6 e5006e70-dfab-49da-90fd-2e47d2eb8ea6)))
and won’t get sent out to the receiver. It is highly recommended to prevent the use of same invoice number already when user tries to create an invoice in the ERP. This to avoid unnecessary error handling on AutoInvoice side.In all of the above cases the invoice IS NOT SENT to the receivables service which means that it won’t be sent to the receiver either. Below is explained how to handle the error cases when the invoice IS ALREADY SENT through the receivables service when the invoice ends up in the error state:
Invoice is sent through the receivables service just before it is sent forward from the AutoInvoice to the receiving operator/access point. In case the receiving operator returns an error (which can happen even a week after the sent) sender needs to handle the failure somehow. Sender is responsible for getting the invoice delivered to the receiver:
In case the invoice ends up in the error state because of the wrong e-invoice address (for example the receiver doesn’t anymore receive invoices to the e-invoice address that the sender has defined as the address) sender needs to reroute the invoice to a new address. Rerouting can be done either from the user interface under the invoice details or then via API from the ERP. Using rerouting functionality does not create a new assignment.
If the reason for failure is in the XML content, the sender needs to send a new invoice with corrected information. In order to do so the sender probably needs to credit the existing erroneous invoice in the ERP. Addition to crediting the invoice in the ERP the sender needs to communicate that to the receivables assignment in question so that Visma Financial Solutions also gets notified to close the assignment. This can be done using the credit_note
event. We highly advise to automate this process in the ERP side to always create a credit_note event to an assignment when the user creates credit notes in the ERP. Although marking the assignment as credited can also be done through the user interface. Note! When sending the new corrected invoice, remember to use a new invoice number to avoid the duplicate invoice number error above.
When an invoice ends up in the error state, Visma Financial Solutions is notified. In case the sender does not act on the error, and the invoice remains in error state even when the invoice is due, Visma Financial Solutions closes the assignment and adds a comment about the closing reason to the assignment details.
In case the receiver doesn’t pay the invoice on time, Visma Financial Solutions will first sent out reminder invoice. First reminder is sent 10 days after the due date of the invoice for B2B invoices, and 14 days after due date for consumer invoices (B2C). Reminders are always sent through the normal post (Letters won’t be sent during weekends or public holidays which will then in some cases add few additional days to the schedule). Language of the reminders and debt collection letters is based on the customer’s language code defined in the original invoice (Finvoice InvoiceRecipientLanguageCode). Default language is Finnish.
To open the Receivables Management service use REST API method PUT /v1/services/receivables
to initiate the activation process. In order to get the service activated an electronic agreement between the company and Visma Financial Solutions needs to be filled and signed by a person having authorized signatory rights for the company (or the one signing needs to have a letter of attorney which needs to be attached to the agreement). Signing of the electronic document requires authorized person to authenticate themselves using their personal online bank identifiers or mobile signature. Authentication and signing process is done by our partner VismaSign. With the parameter authorization_email you can specify the email address for which the VismaSign request is sent to.
Parameter | Description |
---|---|
iban | Account information (IBAN) that Visma Financial Solutions will use when they pay the money they get from the customer (receiver of the invoice). There can only be one account. |
bic | Bank identification code e.g. DABAFIHH |
bank | Name of your bank |
contact_person | Contact person name |
contact_email | Email for possible problem cases and contacting |
contact_phone_number | Phone number for the contact person |
authorization_email | Email for sending the request to sign the electronic agreement. Should be someone having the signing right for the company |
accountable_party | “vfsfi” (default) or “company”. If set as “vfsfi” Visma Financial’s account details are used. If “company”, company’s own account details are used (note! only allowed for certain vendors) |
customer_service_email | This email will be shown on the factoring clause that Visma Financial Solutions will add to the invoices routed through them |
customer_service_phone_number | This phone number will be shown on the factoring clause that Visma Financial Solutions will add to the invoices routed through them |
billing_address | Billing address for possible service costs related to the debt collection processes in the later phase. Price list |
postal_address | Company’s postal address |
When agreement is signed and verified the service gets activated. This happens usually within 1-2 workdays. Note! If you have consumer invoicing enabled you will need to add Visma Financial Solution’s provided IBAN to your sender agreements (SI-messages). You will get the IBAN as a response parameter from the GET /v1/services/receivables
call. Read more How to handle Finnish consumer invoicing.
Use GET /v1/services/receivables
to fetch the status of the activation to see when the service is activated. Or register a webhook to get a request from AutoInvoice when the service gets activated (or rejected).
Receivables Management service can also be activated through our user interface.
If you have the Finnish consumer invoicing enabled on your company’s account, there is an important change you will need to do before this Receivables Management service can be used with e-invoicing to netbanks. There will be a 5 days delay to do the needed changes. During these 5 days all the consumer e-invoices will still go directly to the banks instead of going through the Receivables Management. After the delay the consumer e-invoices are also routed through receivables Management like all the other invoices. This change will enable consumer e-invoices to be sent to your consumers with the Visma Financial Solutions IBAN information.
You will need to update your consumer agreements (SI-messages) by adding Visma Financial Solutions provided IBAN to them and to change the SellerInvoiceIdentifierType (type of the identifier asked from the consumer in their netbank when adding the seller as their invoicer).
You will need to send CHANGE type sender info messages SI-messages to each bank you have the agreement with and do the following changes:
In the SI-message you will need to add Visma Financial Solutions’s provided IBAN number as a new seller account (note! we do not recommend overriding the existing seller account information but instead just add that as a new one).
Addition to adding a new seller account number you need to change the SellerInvoiceIdentifierType if you are currently using either type 01 (national reference number) or 02 (international RF creditor reference). SellerInvoiceIdentifierType defines the type of the identifier the consumer is asked to fill in when they add the seller as their invoicer in their netbank, and with which the invoicer can identify the payer in its system.
Some banks have automated routines to check the seller from the invoice based on the reference number, IBAN and beneficiary name (under EpiBeneficiaryPartyDetails) used and make suggestions for consumers to add as their invoicer. In the case of the Receivables service, the IBAN and beneficiary name used on the invoices belongs to Visma Financial Solutions and in that case the consumer might end up actually making the consumer agreement with Visma Financial Solutions instead of the actual sender company. Reference numbers are also a bit problematic identifiers because the reference number sent from the ERP is not the same as what the receiver gets and what they would fill in in their netbank. Reference numbers are changed by Visma Financial Solutions on the transit. If reference number is used to link new consumer agreements in your ERP’s consumer register you need to check the reference number used by Visma Financial Solutions from the assignment details using GET /v1/assignments/{assignment_id} method from the “reference_ids” parameter, value for the type “number”. And then connect that reference number to your register. if you still want to keep using the reference number as the identifier and want to do the connection between your reference number and reference number used by Visma Financial Solutions you can switch using SellerInvoiceIdentifierType 08 (other numeric identifier), 09 (other alphanumeric identifier) or 99 (other identifier). These types of identifiers banks do not have any checking routines. In the instructions on the sender info (SellerInvoiceIdentifierText) you can still advise the consumer to give the reference number (“Please give the reference number of your latest invoice”).
Easiest solution would be to switch to using something else than reference numbers as identifiers. Good alternative is customer number.
If there is a functionality to create and send the SI-messages directly from your ERP you can most likely do the change easily through that. If you are unsure if there is such functionality in your ERP or you don’t know how to use it contact your ERP support team. After the messages are created they can be sent through our UI or via the API. More information about SI-messages and a link to message_send method to use for sending.
There is also a possibility for senders to use their own invoice image and payment details on the invoices sent through the Receivables service. When this setting is enabled payment details in invoices will not be modified by Visma Financial Solutions and AutoInvoice will not drop the original invoice image and create a new one as it would happen in the default process of how the service normally works.
When a company’s own payment details are used on invoices, receivers will pay the invoice directly to the company’s own account. Therefore all the payments need to be informed to Visma Financial Solutions as direct payments for them to be able to update the assignments accordingly (mark assignment as paid and closed). This means that in order to use this setting the company’s ERP needs to have the full Receivables integration including an automated process for informing direct payments through the API (See Handling payments under the events).
In the service activation there is a parameter called accountable_party which defines who is the receiver for the payments. By default the value is set as “vfsfi” which means that Visma Financial Solutions Oy is the one receiving the payments. This is the default process where invoice details are modified by the service. If accountable_party is left empty or not defined at all, the default value is used. By setting the accountable_party as “company”, invoices are sent to the receivers with the sender’s own payment details and invoice image. Sender will be the receiver of the payments and payments must be informed as direct payments to Visma Financial Solutions Oy through the Receivables API.
As it is crucial to report all the payments as direct payment through the API, the use of the above mentioned parameter is only allowed for predefined ERPs (vendor keys) that have been verified to have a proper automated solution for handling the direct payments through the API. If you as an integrator wish to use this setting, please contact our support team (support@maventa.com) to verify your integration and to add your key as allowed one.
If you want to change company information, you will need to contact our support. Currently it is not possible to do via the API.
If there is a need to limit the debt collection of a certain customer (company), that can be done by adding the customer to a VIP or PREMIUM customer group. Please note that the default model is the most effective option in terms of cash flow and does not require any actions from the user. Adding customers to the service level groups will tranfer the responsibility for monitoring the assignment, preventing expiration of the assignment etc. to the user. In some cases using service level groups might create additional costs for the sender. The grouping feature works based on the customer’s business ID - please make sure that the customer’s information has the correct business ID and that the ID is also given corrently on the invoice XML when sending. If you have added the customer to a group, but you decide you want to continue collecting invoices - simply remove the customer’s business ID from the customer group listing.
Please note that the debt collection does not continue on cases that have been closed in the process earlier even if the customer group is updated.
Service level can be set using the PATCH /v1/service_levels/{customer_bid}
On assignment there is a parameter called service_level. In case the customer in question is either on the PREMIUM or VIP service level group, that parameter will return the information accordingly. If customer is not on the VIP or the PREMIUM group, the parameter will be “default”. There will also be an event added for the assignment, called service_level_changed that will indicate the service level if it is either VIP or PREMIUM. Note! service_level information does not get updated immediately after the invoice is sent and assignment is created. It will get updated after a few hours from the sent.
The default payment monitoring process is pictured below. This is the most effective option in terms of your cash flow and requires no action from you.
A payment reminder and a demand for payment are sent for an overdue invoice, after which the collection of the invoice ends 30 days after the due date of the demand for payment. After this, the responsibility for monitoring the receivable, preventing expiration of the receivable etc. is transferred to your own responsibility. If the customer has not paid the open receivable in full, you will be charged 30€+VAT.
Only a payment reminder will be sent for an overdue invoice. The payment reminder has no reminder fee for your customer. The collection of the invoice ends 30 days after the due date of the payment reminder and the case will be closed. After this, the responsibility for monitoring the receivable, preventing expiration of the receivable etc. is transferred to your own responsibility. You will be charged 5€+VAT for each payment reminder sent
If you do not want to transfer a specific customer’s invoices to Receivables management service payment monitoring at all, add the customer’s business ID below. The information on these invoices will not be transferred to Visma Financial Solutions Oy. Please note that your own account number will be printed on these invoices and you must take care of the processing of the payments, the control of the receivables, preventing expiration of the receivable etc. yourself. There are no additional costs for you.
From all the invoices sent through the Receivables Management service an assignment is created. Assignment is something through which the company can follow up the process on the Visma Financial Solutions side and if the invoice gets paid on time by the debitor (receiver). Assignment is also used for all the communication between the sender company and Visma Financial Solutions. To link the sent invoice and assignment together, there is parameters reference_ids and invoice_id in the assignment having the invoice uuid of the sent invoice. There are 3 different statuses the assingment can have:
Parameter | Description |
---|---|
id | Assignment id |
status | Open (unpaid) / closed (paid or cancelled) / partially_closed (Invoice is paid but not the reminder or collection charges) |
collection_status | Tells the collection status of the assignment. Set based on event added by the agency. Values can be “unknown” (default value until reminder is sent/collection process starts), “reminder_sent” , “debt_collection”, “legal_collection”, “recovery_proceedings”, “debt_surveillance”, “lack_of_means”, “payment_plan” |
service_level | default (normal process) / premium / vip |
debtor | “name”: Name of customer (receiver of the invoice) and “bid”: customer’s bid |
due_date | due date from the original invoice or new due date if due date change request is accepted (see Request a due date change event) |
issued_at | Invoice date from the original invoice |
number | Invoice number from the original invoice |
sum | Total sum of the invoice |
paid | Amount that is paid or credited |
currency | Currency from the original invoice |
created_at | When assignment was created |
updated_at | When assignment was updated last time (e.g. when paid sum was updated) |
partially_closed_at | When assignment was partially closed by Visma Financial Solutions |
closed_at | When assignment was closed by Visma Financial Solutions |
reference_ids | Contains three ids: “agency_id” = Visma Financial id, “invoice_id” = id of the original invoice (invoice uuid), “number” = New reference number that was changed to the original invoice |
[
{
"id": "fa9781ba-20d1-4677-a125-f04bff7bbac0",
"status": "open",
"collection_status": "unknown",
"service_level": "default",
"debtor": {
"name": "Hanna's Test Company"
},
"due_date": "2020-04-20",
"issued_at": "2020-04-01",
"number": "64488",
"sum": 12.3,
"paid": 10,
"currency": "EUR",
"created_at": "2020-04-15T05:47:07Z",
"partially_closed_at": null,
"updated_at": "2020-04-15T21:01:18Z",
"closed_at": null,
"reference_ids": [
{
"type": "agency_id",
"value": "078dbb88-ef8e-4115-8260-c8a542aaa87c"
},
{
"type": "invoice_id",
"value": "f6dcf18d-a1bd-4e72-bb8a-80908527b6c8"
},
{
"type": "number",
"value": "356241887794"
}
],
"events": [
{
"id": "c0c56722-a28b-49d1-aa87-1c4d7f3cf1af",
"type": "paid",
"data": {
"sum_paid": 10,
"booked_at": "2020-04-16",
"archive_number": "12345"
},
"party_id": "938fc79f-9c00-47af-8507-cdf15838aa96",
"seens": [
{
"seen_at": "2020-04-15T22:00:06Z",
"seen_by": "Visma Financial Solutions FI"
}
],
"created_at": "2020-04-15T21:01:18Z",
"happened_at": "2020-04-16T00:00:00Z"
}
]
}
]
REST API for assignment handling.
collection_status | Events that sets the collection status |
---|---|
unknown | default value until reminder is sent or collection activities are started |
reminder_sent | reminder_sent / second_reminder_sent |
debt_collection | collection_started (first payment demand is sent) / second_demand_sent / tratta |
legal_collection | legal_collection_started |
recovery_proceedings | application_for_enforcement |
debt_surveillance | credit_loss_suggestion (Note! credit_loss event does not change the collection status |
lack_of_means | lack_of_means |
payment_plan | payment_plan |
Parties connected to an assignment (company and Visma Financial Solutions) can add events to communicate changes to the assignment. Events describe what has happened to the assignment for example when the customer pays the invoice Visma Financial Solutions will add an Paid event to the assignment. Events can also be used to update assignment information from the sender side like requesting a new due date or inform direct payments. Events can be considered as a communication channel between Visma Financial Solutions and your company.
We highly advice to automate these events as far as it is possible from the ERP. At least paid
and credit_note
events for making sure these will be commnunicated always to the Visma Financial Solutions without needing to rely end user to remember to do these through our UI.
REST API for event handling.
comment
- Add a comment or question. With this event you can add a comment or ask a question from Visma Financial Solutions related to the assignment in question. Visma Financial Solutions will also use this event for sending comments or questions to your company.
It is highly recommended to follow up closely these comment
events. Good solutions would be to build some separate view to list only the comment
events for a clear separation from all the other events. In this way you will ensure that senders will easily see if an assignment gets a question or a comment from Visma Financial Solutions that they might need to respond to somehow.
Both company and Visma Financial Solutions can send this event.
paid
- This event is used for notifying when assignment gets paid by the customer, for informing direct payment and for marking credit note as used.
close
event is added).
If the customer pays more than the invoice sum is the extra money is returned to the customer. So there is no way of paying more than one invoice at a time. Visma Financial Solutions won’t save the money to upcoming payments. In account statement (SEPA) all the payments done by Visma Financial Solutions have VISMA FINANC as a payer’s name abbreviation. This information can be used to identify direct payments which will then have something else as payer’s name.comment
event if you want to give some additional information related to the payment. If assignment is fully paid Visma Financial Solutions will close the assignment afterwards (close
event is added). It is really important to use this event to inform the direct payments in order for Visma Financial Solutions to know to update the sum that is still open or to close the assignment. We highly advice to automate this event from the ERP when direct payments happens.credit_note
event is used) credit note is also needed to be marked as used and that can be done using this event for the credit note and giving the paid sum as negative value. In this way Visma Financial Solutions will get the information to also mark the credit note as closed (close
event is added). (When connecting a credit note to an assignment through our UI the credit note is marked automatically as used.)Paid event will update the parameter “paid” in the assignment. the assignment “sum” does not get updated.
{
"type": "paid",
"data": {
"sum_paid": 200.5,
"booked_at": "2019-01-04",
"archive_number": "12345"
}
}
Both company and Visma Financial Solutions can send this event.
close
- This event is used by Visma Financial Solutions to mark the assignment as closed. Assignment gets closed when it is fully paid by the customer, marked as fully paid by the sender or if the sender wants to cancel the assignment.
Only Visma Financial Solutions can send this event.
partially_closed
- This event is used by Visma Financial Solutions to mark the assignment as partially closed. This is used when invoice sum is fully paid but customer did not pay reminder or collection charges. This means that from the mandator’s perspective the assignment is closed, but the customer still needs to pay more money to the Visma Financial Solutions. When assignment gets this event it’s status changes to ‘partially_closed’.
When customer eventually pays the remining reminder or collection charges Visma Financial Solutions will add the close
event and the assignment status changes to ‘Closed’
Only Visma Financial Solutions can send this event.
due_date_change_request
- Request a due date change. If there is a need to update the due date of an assignment, you can request the change. Visma Financial Solution Oy will either accept or reject the request depending on the new due date and how far in the collection process the assignment already is. If the debt collection process has been started, due date change will be rejected. When a due date change request is accepted you will receive a confirmation event (due_date_changed
event is added) about the acceptance and due date is updated accordingly for the assignment (parameter due_date gets a new value).
If request is rejected you will get a comment with the reason for the rejection (comment
event is added).
Only company can send this event.
due_date_changed
- This is an event that will be received when due date change request is approved by Visma Financial Solutions. This will update the assignment’s due date. Note! This won’t update the original invoice in question.
Only Visma Financial Solutions can send this event.
credit_note
- You can connect a credit note to an assignment by giving the credit note number and credit sum with this event. This event is added for the assignment in question you want to connect the credit note to. Give the credit note sum as positive value in the request. If assignment is fully credited Visma Financial Solutions will close the assignment (close
event is added). If the credit note is sent through AutoInvoice you will also need to mark the credit note as used and connected by adding a paid
event to the credit note assignment and give the paid sum as negative value. If the credit note is not sent through AutoInvoice you should still use this event to inform Visma Financial Solutions for crediting the assignment so that they know to close the assignment, or if only part of the assignment is credited they will continue payment monitoring and possible debt collection process with a different sum.
If whole assignment is credited with the credit note:
Assignment gets credit_note
event with credit sum given as positive value
Credit note gets paid
event with paid sum as negative value
We highly advice to automate this event in the ERP side to always create credit_note event to an assignment when user creates credit notes in the ERP.
Only company can send this event.
cancel
- You can cancel the whole receivable process for the assignment. Please note that this will close the assignment (close
event is added) and the closing cannot be reversed or modified afterwards. Visma Financial Solutions will not monitor the assignment or take actions to collect the debt. Company is then responsible for monitoring the assignment. Do not use this for reporting a credit loss. Note! If reminder or collection actions have already been initiated, Visma Financial Solutions will charge the client a cancellation fee.
Only company can send this event.
freeze
- You can request to suspend the debt collection process for the assignment in question until the specified date. Please note that once the suspension has been set, Visma Financial Solutions will not monitor the assignment or take actions to collect the debt. Company is then responsible for monitoring the assignment. The suspension can be requested until the legal collection has started or the enforcement authority has found the customer insolvant. The debt collection will automatically continue after the expiration date. You can request an update to the debt collection suspension expiration date by choosing a new date or you can end the suspension by setting today as the expiration date.
Set the parameter “frozen” to true
{
"type": "freeze",
"data": {
"frozen": true,
"end_date": "2019-01-04"
}
}
Only company can send this event.
freeze_confirmed
- This event is added by Visma Financial Solutions as a confirmation when the Temporary suspension of debt collection has been set to an assignment.
{
"type": "freeze_confirmed",
"data": {
"happened_at": "2019-01-04",
"end_date": "2019-02-15"
}
}
Only Visma Financial Solutions can send this event.
unfreezed
- The Temporary suspension of debt collection has been terminated and the debt collection of the assignment will continue.
{
"type": "unfreezed",
"data": {
"happened_at": "2019-01-04"
}
}
Only Visma Financial Solutions can send this event.
interest_paid
- With this event Visma Financial Solutions will inform if there was interest paid for an assignment and what was the interest amount. This event is usually received at the same time than the paid event. Interest will be paid daily as one payment that contains all the interests from the same day. Message in the account statement is “Korkotilitys PVM”.
Interest in this matter is the one defined by the sender for their invoices if the receiver does not pay on time. Note! Interest needs to be defined on the invoice XML. It is not enough to have it only on the invoice image.
Only Visma Financial Solutions can send this event.
cash_discount
- With this event Visma Financial Solutions informs if the customer used cash discount on the payment and how much was the cash discount amount.
paid
sum + cash_discount
sum = assignment’s sum
This event is usually received at the same time than the paid event.
Only Visma Financial Solutions can send this event.
reminder_sent
- This event is added by Visma Financial Solutions when a first payment reminder has been sent of an unpaid invoice. This event will set the “collection_status” of an assignment to reminder_sent
if it is not already set.
Only Visma Financial Solutions can send this event.
second_reminder_sent
- This event is added by Visma Financial Solutions when a second payment reminder has been sent of an unpaid invoice. This event will set the “collection_status” of an assignment to reminder_sent
if it is not already set.
Only Visma Financial Solutions can send this event.
collection_started
- This event is added by Visma Financial Solutions when a first payment demand has been sent of an unpaid invoice. This event will set the “collection_status” of an assignment to debt_collection
if it is not already set.
Only Visma Financial Solutions can send this event.
second_demand_sent
- This event is added by Visma Financial Solutions when a second payment demand has been sent of an unpaid invoice. This event will set the “collection_status” of an assignment to debt_collection
if it is not already set.
Only Visma Financial Solutions can send this event.
tratta_sent
- A tratta has been sent of an unpaid invoice. This event will set the “collection_status” of an assignment to debt_collection
if it is not already set.
Only Visma Financial Solutions can send this event.
legal_collection_started
- A summons application has been sent and legal collection of the assignment has started. This event will set the “collection_status” of an assignment to legal_collection
.
Only Visma Financial Solutions can send this event.
application_for_enforcement
- An application for enforcement has been sent and the assignment has been transferred to the enforcement authority. This event will set the “collection_status” of an assignment to recovery_proceedings
.
Only Visma Financial Solutions can send this event.
lack_of_means
- The enforcement authority has found the debtor insolvent. This event will set the “collection_status” of an assignment to lack_of_means
.
Only Visma Financial Solutions can send this event.
payment_plan
- A payment plan has been agreed on the invoice. This event will set the “collection_status” of an assignment to payment_plan
.
Only Visma Financial Solutions can send this event.
credit_loss_suggestion
- A recommendation from Visma Financial Solutions to mark the assignment as credit loss. This event will set the “collection_status” of an assignment to debt_surveillance
.
Only Visma Financial Solutions can send this event.
credit_loss
- You can mark a credit loss on assignment in question. Reporting a credit loss is only done for the accounting purposes and has no impact on the payment control and monitoring. Visma Financial Solutions will continue the collection process. Visma Financial Solutions will suggest that the sender marks the assignment as credit loss if they know the customer won’t pay it. Note! After posting, the credit loss cannot be reversed or modified.
Only company can send this event.
service_level_changed
- This event is created by Visma Financial Solutions if the customer of the invoice (receiver) is either on the VIP or PREMIUM service level group. If the service level group is changed, there will be a new event added. This event will set the “service_level” of an assignment to default / vip / premium based on the choosen service level group.
Only Visma Financial Solutions can send this event.
delivery_status
- This event is mainly created for Visma Financial Solutions to follow up if the original invoice sending has been successful or if it has failed. This is the only way they can get the information. If the original invoice ends up in the error state and the sender does not act on it, and if the invoice remains in error state even when the invoice is due, Visma Financial Solutions closes the assignment and adds a comment about the closing reason to the assignment details.
As an ERP integrator this event might not bring any additional value in your implementation if you are already following up the statuses of sent invoices through the invoice APIs and communicating the errors to the user. In this case these events can be filtered out.
If you want to show these events for the users, there are few things to consider when implementing them:
Only AutoInvoice can send this event.
We have done our own implementation for the Receivables API that serves our UI users. The UI is done for our embeddable user interface (EUI) and can therefore be taken easily into use as is and customize by any integrator. For more information about our EUI and how to take that into use can be found here
Dasboard of the receivables. You can show the whole EUI with the main top navigation bar (this way customers can access other parts of the EUI as well):
Listing of open assignments. You can also hide the main menu and only show the Receivables part of the EUI:
Details of one assignment. You can only show the details of only one assignment. This view could be part of the sent invoice details inside the ERP by providing easy and quick access to all the necessary information related to that particular invoice:
Full API integration (all done inside the ERP) | Lightweight Integration | No API integration | |
---|---|---|---|
Activation | Through API using PUT and GET /v1/services/receivables |
Full API integration / No API | Through the UI using our form |
Consumer invoicing | ERP creates and sends automatically the SI CHANGE messages when service gets activated. The IBAN needed is in the response of GET /v1/services/receivables. ERP handles the targeting of the new RI messages in case reference number is the connecting information: The reference number VFS used in the invoice can be found from the assignment details “reference_ids” and type “number” | Full API integration / No API | User creates SI CHANGE messages and then sends them through our UI. VFS IBAN is shown in the Receivables Settings page. User needs to then also somehow handle the targeting of new RI messages manually |
Assignment listing | /v1/assignments, /v1/assignments/{assignment_id} and /v1/assignments/{assignment_id}/events. Assignments could be listed as their own view or then you could think of having the assignment information (and possibility to add event) shown under the invoice details. | Full API integration / No API | User uses our listing of assignments in our UI |
Events | /v1/assignments, /v1/assignments/{assignment_id}, /v1/assignments/{assignment_id}/events and /v1/events. You should think a bit how much your users would like to follow up the receivables and which events do they want to see or being able to add themselves. Is it enough to see if there is something happening, for example a comment is added by VFS or if there has been a reminder sent for a customer that hasn’t paid on time? Should these events create some notification on the ERP side when arriving through the API? Adding of events to an assignment is something that should be fully integrated as part of the ERP processes. For example if direct payment comes in then paid event is automatically created from the ERP to the Receivables API. Also having some separate handling for comment events would be beneficial so that important comments or questions from VFS would not get lost and it would be easy for the user to reply | We highly advice to automate at least the events for direct payments (paid event) and connecting credit notes (credit_note event). Also the request to change a due date and then the confirmation for that (due_date_change_request , due_date_changed ) |
User needs to handle all the events through our UI which migh in some cases mean double work. For example requesting a new due date might also then need them to do a change also on the ERP side. Informing of direct payments and connecting credit notes are then on the hands of the sender. These are something that are really important to remember to do so that VFS does not start collection process even though the customer has already paid the invoice |
Service can be closed by either deregistering the profile from the RECEIVABLES network through the API or then by closing the service through the user interface. After the service is closed new invoices sent are not routed through Visma Financial Solutions anymore. Visma Financial Solutions will still handle the open assignments.
NOTE! Even though the user closes the service, it might still be necessary to allow the use of the APIs in order for the user to continue following up the remaining open assignments and to perform events if necessary.
Reopening the service needs manual handling and therefore being in contact with our support.
Reskontravahdin asiakasohje (in Finnish only)
Use scanning service to receive PDF and print invoices in electronic format. Open scan accounts where suppliers can send print and PDF invoices. The invoices are scanned and then delivered to the companies as electronic invoices.
The scanning service receives invoices either as PDF (by email) or as paper invoices, which are scanned into PDF. An Optical Character Recognition (OCR) system is used to interpret keywords from the invoices.
After the OCR interpretation and validation, all invoices are checked in an extra quality control. If the program finds any deviation, the invoices will be manually checked one more time.
The resulting XML invoice and original PDF are delivered to recipient’s AutoInvoice account, from where the recipient’s ERP can fetch them. It is important that the recipient always checks the accuracy of scanned invoices.
Field | Source | Validation | Comments |
---|---|---|---|
Invoice number | Scanned | ||
Invoice date | Scanned | Valid date, not too old | |
Invoice due date | Scanned | Valid date, not too old, not too far into the future | |
Currency | Scanned | Valid currency | |
Supplier Organisation number OR Supplier VAT number | Scanned | Valid format and modulus |
NO: Organisation number (for foreign suppliers VAT number is used in the OrgNumber field) SE: Organisation number and VAT number NL: KvK number and VAT number DK: CVR number FI: Organisation number (y-tunnus) and VAT number |
Supplier name | Searched from a list of companies | Searched from a list by organisation number. Not first time when invoice is passed, second time automatic.If name of the company can’t be found by search, organisation number will be shown as the name. If organisation number cannot be interpreted invoice will be passed with UNKNOWN_VENDOR as the supplier name. | |
Buyer Organisation number | Email address / Scanned | When an invoice is sent to scan service by email, the email address contains organisation number. For a paper invoice, organisation number is intepreted from the scan. If no organisation number or scan id (serial number) can be found, buyer's name will be used to find organisation number. | |
Gross amount (including VAT) | Scanned | Gross amount should agree with VAT amount | |
Net amount (excluding VAT) | Calculated by Scan service | Calculated: Gross amount - VAT amount | |
VAT amount | Scanned | Gross amount should agree with VAT amount | |
VAT percent | Calculated by Scan service | Calculated from Gross amount and VAT amount, and delivered without decimals.If there are products with different VAT percents on the invoice, the calculated VAT percent will be somewhere between the actual VAT percents. If there is a rounding amount on the invoice, it is not taken into account when calculating the VAT percent. | |
Invoice identification (debit/credit) | Reminders and other documents that are not invoices or credit notes are sent from Scan service to customers by email. | ||
Supplier IBAN number OR Supplier account number | Scanned | Modulus checked for account numberValid IBAN |
NO: Account number, for foreign suppliers IBAN number is used in the AccountNumber field. SE: Account number (bank giro or post giro), for foreign suppliers IBAN number is used in the AccountNumber field NL: IBAN number DK: Both Account number and IBAN. If the account number is missing from the invoice, the last part of the FIK code is used. FI: IBAN number |
Payment reference or reference number / OCR number | Scanned | Modulus checked |
NO: KID SE: OCR number NL: Nothing DK: FIK code, all the numbers and signs FI: Viitenumero |
Reference name/number | Scanned |
DK: Their reference and order number FI: Text in "Viitteenne" field SE: Reference name/number NO,NL: - |
|
Number of pages |
The scan account can be opened over the API or through the UI from company settings.
SOAP API: scan_account_order
REST API: POST/v1/company/profiles
{
"network_settings": {
"return_email": "example@example.com",
"return_address": {
"post_code": "00000",
"post_office": "cityX",
"street_address": "Street 1"
},
"other_docs": false
},
"network": "SCAN",
"profiles": ["INVOICE_AND_CREDIT_NOTE"]
}
Before opening the scan account for a company, make sure company has the receiving setting turned on. Company must complete the customer authentication process to enable the receiving of invoices. Scanned invoices from the scanning service are delivered to the AutoInvoice customer like any other incoming e-invoice and for this reason the invoice receiving must be on to enable scanning.
When opening the scanning service, customer needs to specify return e-mail address where all other material than invoices are delivered by the scanning service. Changes to company return address or other information can be made using
SOAP API: scan_account_order
REST API: PATCH/v1/company/profiles/{id}
Company informs their suppliers about their scan address they have received when service is activated. Scan address contains the company’s scan ID number that is used to identify the recipient.
There are two ways suppliers can send invoices to the scanning service to be scanned; by e-mail or by post.
Finland, Sweden, Norway, Denmark and Netherlands
Requirements for sending
Finland and Norway
Scan service identifies the recipient using following information found from the invoice image if invoice is sent by post:
Sweden
Scan service identifies the recipient using the FeAddress (Postal scan address) and company name on the envelope
Finland | Sweden | Norway | Denmark | Netherlands | |
---|---|---|---|---|---|
Scan ID | company business ID | SE-orgnumber | company business ID | CVR number |
VAT number or KvK number |
Email scan address |
invoice-BID@kollektor.fi e-mail address without “-“ in business identity code (e.g. invoice-12345678@kollektor.fi) |
SE-orgnumber@pdf.scancloud.se where orgnumber is the organisation number of the company (only digits, no hyphen) |
BID@autoinvoice.no | CVRnumber@autoinvoice.dk |
KvKnumber@autoinvoice.nl or VATnumber@autoinvoice.nl Depending which one was used when the company was registered to AutoInvoice |
Postal scan address |
Company name Scan ID PL 100 80020 Kollektor |
Company name AISEXXXX Scancloud SE-831 90 ÖSTERSUND, Sweden *where XXXX is a customer number assigned to the company |
Company name Scan ID POSTBOKS 3261 7439 TRONDHEIM |
Company name Scan ID Postboks 541 DK-2860 Søborg DENMARK Note! New address in use since 28.02.2022 |
- |
Scan service delivers only invoices and credit notes electronically. When a customer opens the scan service they need to specify a scan return address that is used to deliver none invoice materials. Marketing materials are not delivered.
Delivered as e-invoices:
Delivered via e-mail:
Delivered via post:
Thrown away:
See your used price list for the relevant delivery prices.
End users can report interpretation errors by email to support@maventa.com. Support contacts the validation teams at scan service provider to use auto learning process, where interpretation is manually changed so that invoices are correctly interpreted the next time.
If there are problems on the invoice, users can also request rescanning.
Closing the service (disabling the scanning service) is done by calling API or via the UI’s scan account page.
SOAP API: scan_account_disable
REST API: DELETE/v1/company/profiles/{id}
After the scan account is closed in the AutoInvoice, information is sent to the scanning service provider. When the account is fully closed the scan e-mail address stops working. If some party still sends material to it they will receive an automatic reply that the e-mail address is no longer in use.
Material sent by post will be scanned and delivered to the recipient by e-mail (to the return e-mail address) for the next 60 days and after that everything is destroyed. The scanning service does not inform the senders that their paper invoices were not delivered. When closing a scan account, the company should inform their suppliers about the way the company will receive invoices from them in the future.
Use AutoInvoice Detect service to add more automation and safety into received invoice handling. Service runs different automated checks on company’s suppliers and purchase invoices based on which company can get useful notifications to support their invoice processing.
As a source the checks are using a variety of external registers, such as central business registers or warning lists, as well as data based on the broad invoice traffic in the Nordics.
Detect is an automated checking service for suppliers and purchase invoices. Detect checks and notifications aim to support companies in supplier management, automating invoice handling, spotting potential fraud attempts as well as in general preventing mistakes in payments and bookings. The service is integrated as part of invoice receiving, so the notifications can be shown to the company always in the right context.
Currently the following checks are available in the service
Detect is integrated as part of incoming invoice handling over the REST API.
Detect checks are first activated by the receiver company. After this all company’s incoming invoices coming to AutoInvoice are automatically checked. When the invoice becomes available for download, also the check results are available to fetch and to display to company.
AutoInvoice runs the checks and provides ready made descriptions, notification statuses and messages for them. Texts and translations are available in EN,NO,FI,SE,DK,NL.
Activation and showing the check results takes place on integrated system (company’s financial software/ERP).
Detect uses the AutoXchange API (REST)
General instructions for REST API authentication are explained here
For Detect, use "Authenticate as a company"
- option and select the authentication scope "analysis"
.
To take the service into use for company, user activates the checks they want to start using. Note that before activating the service the user needs to be shown and accept the General service disclaimer.
DO:
Show user the General service disclaimer.
Example check activation in user interface
After activation all company’s incoming invoices are automatically checked. When running the checks is ready, the invoice is released to customer’s inbox and check results are made available over the REST API.
Invoice and the attachments are downloaded as usual (see invoice receiving ). Detect check results are downloaded with an own API call.
DO: Fetch the check results from AutoInvoice
analysis status
shows as "RUN_FAILED"
Analysis_result_status
tells about the result of the check. If there is something to notify on the invoice generally status WARNING
is used, it indicates there is something to display to userAfter check results are fetched, relevant notifications are shown to user.
If something is spotted on the invoice, this is shown to user by notification message as part of handling the incoming invoices.
DO: Use analysis_result_status to define what messages to show to user.
Example result visualisation in user interface
Same method that is used to activate the checks is used to deactivate them:
Closing the service happens by deactivating all the checks.
analysis_status | analysis_result_status | why | status type |
---|---|---|---|
RUN_SUCCESFUL | OK | Check didn’t find anything to notify | Final |
RUN_SUCCESFUL | WARNING | Check found something to notify (anomaly detected etc.) | Final |
RUN_FAILED | FAILED | Technical issue with the check. External service down or similar | Final |
NOT_APPLICABLE | NOT_APPLICABLE | The check is not be executed because it is not relevant for the invoice. | Final |
During the checking process checks can also have a state PENDING
, which means that check is waiting for execution or being retried. This state is an internal intermediate state that is used inside AutoInvoice only. This state should usually not be visible for integrators. When the invoice becomes available for listing and downloading the checks should always have one of the final states described in the table above.
Visma does not warrant that the customers use of the check services will be uninterrupted or error-free, or that the service and/or the information obtained by the customer through the Services will meet the customers requirements. The customer acknowledges and agrees that the check services will evolve over time and that functionality may be added and removed from time to time. The customer assumes sole responsibility for results obtained from the use of the check services and for conclusions drawn from them. Visma shall have no liability for any damage caused by errors or omissions in any information, instructions, warnings or flags provided to the customer in connection with the check services, or the customer’s actions or non-actions in response to such information.
Maventa Connector is a simple Maventa client program for Windows. If your ERP does not have a direct Maventa integration but can create invoices as XML files, you can use Maventa Connector to send those invoices. More information available in Finnish at www.maventa.fi and our support portal.
You can find and download the installer and more information about the latest version here
Please also note that Connector version 2.0+ requires .NET Framework 4.6.1.
We do not recommend using old versions of Maventa Connector. For special cases we keep some old versions available. Please contact our support for more information.
Connector’s security depends 100% on the OS security and folder privileges that it is running on. Connector client program moves documents between a folder and AutoInvoice API using HTTPS same as all other ERP traffic. As the client program only makes API calls and copies files between API and folder and is triggered from the OS side there are no additional security aspects to consider as there are no incoming ports the software listens to. All local users that are given access to the filesystem that contain the configuration files can read the contents (API keys) thus the application should be protected from the OS side users using folder permissions. The program is using an old framework so software framework itself is outdated and this should be taken into consideration when thinking about using it.
Invoices can also be sent as an email invoices to the recipients. Email route is used as a secondary delivery route if invoice could not be sent as an e-invoice and if recipient e-mail address is available. Email invoice sending can also be forced or then disabled completely.
Email is the first fallback route that our automated routing tries when it cannot find a way to send the invoice as an e-invoice. Routing order is the following 1. as an e-invoice 2. as an email 3. through the print service. Email route can also be forced if the desired way to reach the receiver is email. This can for example be a case for consumer invoicing when the recipient doesn’t have a way to receive invoices electronically through netbank (Read more about consumer invoicing).
Email sending is by default enabled on all company accounts. If needed it can be disabled from company settings or then invoice by invoice in sending. More about the disabling here.
Email route is used when sending as an e-invoice is not possible. To be able to route invoice as an email the receiver’s email address needs to be present in the XML.
It is possible to force the invoice to be sent as an email by using invoice_put_invoice_with_metadata or POST /v1/invoices
methods for sending. In the metadata other routes are being set as disabled to force email route. Also the receiver’s email address can be given in the metadata. Email address given in the metadata will be used instead the one in the XML.
Forcing to email route is also possible with certain XML formats:
S-EDI: If OutputMedia is set as “PDF” only e-mail route is enabled
There are 3 choices from which the sender can choose how they want their e-mail invoices to be send out. These e-mail settings can be changed via UI or using configure_company or PATCH /v1/company/settings
API methods.
Selecting this option means that the invoice e-mail will contain a link to download the invoice from AutoInvoice service. There is also a passcode on the email that the receiver needs to give behind the link to access the invoice. When the receiver clicks the link and open the invoice, the sender receives a notification e-mail.
Selecting this option means that all invoice e-mails will contain an image of the invoice in PDF format. Note that the total sizes of attached documents in an e-mail must be under 5 megabytes. If the attachments are larger, no attachments will be attached but instead the receiver needs to download using the provided link in the e-mail. Note! There will always be also the link to download because there might be some unexpected issues showing attachments and in this way we will ensure that the receiver will always get the attachments.
Virtual barcode is also added into the email body when sending invoice with image attached.
By selecting invoice objections, the receiver must accept the invoice before being able to view any payment information. Receiver can also choose to decline the invoice, with the option to notify sender the reason for the decline. When any changes occur to the invoice, for example, the receiver accepts the invoice, the sender receives a notification e-mail and the status in AutoInvoice is updated accordingly.
Sender can define a message and define contact details that are shown in the email body either through API or via our UI. When using API use either configure_company method with giving the information in the parameters message_from_sender, contact_person, contact_email and contact_phone, or PATCH /v1/company/settings
.
Note! When you define a contact email address we will send a confirmation email to this email address where you need to confirm that the address may be used for that purpose.
Email language depends on the input format (XML) and how language is set there. We currently support the following languages: Finnish (FI), English (EN), Swedish (SE), Norwegian (NO), Danish (DK) and Dutch (NL). Not all are according to the ISO 639-1 codes but we hope to get support soon for at least SV, NN, NB and DA soon.
Click the XML your product is sending from the list below to see how the language of the email invoice is defined:
InvoiceRecipientLanguageCode
Fallback / default: FI
Finvoice also supports SV (Swedish) because Finvoice uses ISO 639 Language Codes e.g. FI, SV, to define the language. So both SV and SE will result the same, Swedish language.
Sender’s AutoInvoice account country code (FI/SE/NO/DK/NL only, when AccountingCustomerParty/Party/PostalAddress/Country/IdentificationCode empty)
BuyerParty/Party/Address/Country/IdentificationCode (FI/SE/NO only) NOT WORKING CURRENTLY
Fallback / default: EN
Sender can specify how often a reminder email is sent if the invoice has not been accepted, declined or the link has not been opened by the receiver. This does not apply if the invoices are sent as attachments.
configure_company email_remind_freq or PATCH /v1/company/settings
“reminder_frequency”.
If you have defined a contact email that is used as the reply-to address for email invoices. If not defined the fallback is the user’s email address (either API user’s email or an email address from the XML if defined). If that does not exists, fallback is the company email address.
If the email bounces due to for example a non existing email account the invoice will go into error state. The sender will be notified by email as long as the email notifications are not disabled. Error is also returned through API when asking after status of the sent invoice.
Note that the invoice will not go into error state if the recipients email box is full, or if recipients email marks the email as spam. If you will be sending out an email invoice with big attachments it is good practise to contact the receiver afterwards and making sure they really received the invoice to their email box.
Email sending is by default enabled on all company accounts. You can either disable the whole email sending possibility from company settings or then disable it invoice by invoice in sending.
To disable the whole email invoice sending use configure_company API method and set parameter send_invoice_email to 0, or with REST API use PATCH /v1/company/settings
set “enabled” as false under the “send_invoice_email”. By choosing this setting the email route is skipped in automated routing.
To disable the email sending invoice by invoice use invoice_put_invoice_with_metadata or POST /v1/invoices
methods for sending and set the email route as disabled. This will skip the email route for that particular invoice. If you are using some other method for sending also leaving the receiver’s email address empty will cause the email route to be skipped.
The Embeddable User Interface (EUI) is AutoInvoice user interface that can be embedded into the ERP. With EUI customers don’t need to visit any external webpage to access their AutoInvoice account but instead they can access their AutoInvoice related settings, activate additional services and view their invoice listings directly from inside the ERP system. EUI is highly customizable which means that every ERP using it can create their own look of it by hiding parts of it their customers don’t need.
By using EUI you have the possibility to skip part(s) of the API integration towards us and still provide your customers everything directly from your product. Your end customers can also get a possibility to have a quick access to our new features and services without them having to wait for developement and changes on the ERP side thus reducing the time to market of our new cool features. Embedding the EUI to be part of your product is really easy and does not require lot of time or development resources.
Even though almost everything can be done via the EUI there is still some functions that we highly recommend that the ERP does through the normal AutoInvoice API integration:
Basically all the rest can be done via the EUI:
First you should think a bit what do you want your end customers to see. What parts of the EUI they need? And then decide how to show those views. Should you add one button to open up the whole EUI and let customers navigate themselves to the page they need or should you show different views in different parts of the ERP depending on the context (Settings view embedded into the part which shows ERP’s settings, and invoices lists where there are invoices listed on the ERP)?
Read more about the customisation of the EUI. Our team is happy to assist you in deciding what would be the best fit for your ERP. If you want help in deciding or if you have made some decisions youself contact AutoInvoice support and ask for an EUI ERP profile. We will then set up you profile based on your preferences.
It is really easy to embed. We offer two different solutions for embedders, one where you can include a script tag on your HTML page within your product, and another one where you can use an iframe (or similar solution) to embed the EUI. First one we recommend to those products that are running in the user’s browser because with the iframe solutions there might (and most likely will) be problems loading cross-domain content. Both of these embedding methods, script embedding and Iframe embedding, explained in details.
What is common in both ways to embed are the domains listed below and that you will need to get an access token for the company.
We currently host the EUI under 3 different domains:
Production environment:
Testing environment:
Authentication and access to the EUI is done using token based login (based on company_uuid, user_api_key and vendor_api_key).
The token to open EUI is fetched using the AX Oauth2 endpoint using the following parameters
Parameter | Desciption | Value/example |
---|---|---|
vendor_api_key | The vendor API key for the ERP | 37fc1ebc-dd4f-11ea-87d0-0242ac130003 |
scope | The scope that is needed, eui is required | eui |
grant_type | The OAuth2 grant type | client_credential |
client_secret | company_uuid | 32d74434-dd4f-11ea-87d0-0242ac130003 |
client_id | user_api_key | 298c6ce2-dd4f-11ea-87d0-0242ac130003 |
Endpoint for getting the token:
Testing: https://ax-stage.maventa.com/oauth2/token
Production: https://ax.maventa.com/oauth2/token
curl -X POST "https://ax-stage.maventa.com/oauth2/token"
-H "accept: application/json"
-H "Content-Type: multipart/form-data"
-F "grant_type=client_credentials"
-F "client_id=company_uuid"
-F "client_secret=user_api_key"
-F "scope=eui"
-F "vendor_api_key=erp_vendor_api_key"
{
"access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZGVudG......",
"token_type": "bearer",
"expires_in": 3600,
"scope": "eui"
}
When you have an access token you can then use it in the emdedding solution you have chosen, script embedding or Iframe embedding. Both are explained below:
Add script tag <script>
in your browser page with the following content:
<body>
<div style="height: 1024px" id="eui-container"></div>
<script src="http://autointerface.visma.net/embed"
data-token="eyJ0eXAiOiJKV1QiLCJraWQiOiJjODJhZTdiZTU...."
data-container-id="eui-container"
data-default-path="/invoices"
data-profile="my_erp_profile_name"
data-locale="en"
data-setup-top_menu="false"
></script>
</body>
Parameter | Desciption | Value/example |
---|---|---|
src | Main URL for EUI | http://autointerface.visma.net/embed |
data-token | access_token property from the OAuth2 response | eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9…. |
data-container-id | Must match the id of the div. Inside this div the EUI will be rendered | eui-container |
data-default-path | What page to open. List of direct URLs | /invoices |
data-profile | Each ERP will have their own profile for customisation | my_erp_profile_name |
data-locale | For defining language of the EUI (fi,se,no,dk,nl) | fi (default = company’s country) |
data-setup-top_menu | Setup parameters for further customization if needed | data-setup-… false = hide / true = show |
div style=”height:..” | a Proper height must be given. static or dynamic. If not defined you won’t see the EUI | div style=”height: 1024px” |
In the above example the EUI is opened directly to the invoices page, language is set to be english and the whole top menu is hidden.
With this embedding method there is no way to renew the token. This means if the user has the EUI open for over one hour the session will be unusable and needs to be restarted with a new authentication. So remember that the token will expire in one hour and user will be kicked out. When that happens customers should be able to refresh the page and gain access again.
The endpoints for the process are the following:
Testing | Production | |
---|---|---|
Endpoint for getting the token | https://ax-stage.maventa.com/oauth2/token | https://ax.maventa.com/oauth2/token |
Endpoint for initiating a new EUI session | https://autointerface-embeddable-stage.maventa.com/authentication/token | https://autointerface-embeddable.maventa.com/authentication/token |
Endpoint for renewing the token | https://autointerface-embeddable-stage.maventa.com/authentication/renew | https://autointerface-embeddable.maventa.com/authentication/renew |
While the user’s EUI session is active you need to act when the token is about to expire. The expires_in attribute in the token response tells how long the access token is valid. To be sure deduct a few minutes from the time to not run into issues. It’s important to stop the renewal process if the user closes the EUI session or the user have logged out in some other way.
The provided token in the initial request will be valid for one hour and if the token is not renewed the users session will end when the token expires. This means if the user has the EUI open for over one hour the session will be unusable and needs to be restarted with a new authentication. To prevent this the token can be updated for the user in the background without the user noticing anything (Step 4). To be able to renew the token the first thing to do is to pass a unique ID as the session id for each authentication that is initiated, this to be able to associate to the session on renewal. The unique ID is given in the session_id parameter on the initial authentication request (see the step 3).
token = fetch_token
setTimeout(function(){
if(user_session_active()) {
renew_token();
} else {
// user has closed the EUI window
}
}, token.expires_in - 60*5);
When you have a token you are ready to open EUI in a browser window.
Depending on the browser component capabilities it varies a little how the EUI session can be initiated. The token can be put in either the POST body or in the Authorization header as a Bearer token.
Parameter | Desciption | Value/example |
---|---|---|
token | access_token property from the OAuth2 response | eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9…. |
profile | Each ERP using the EUI will have their own (profile) for customisation | my_erp_profile_name |
locale | For defining language of the EUI (fi,se,no,dk,nl) | no |
redirect_to | What page to open. List of (direct URLs) | /invoices |
session_id | Define a session id. We prefer UUID | erp_users_session_id |
curl -X POST "https://autointerface-embeddable-stage.maventa.com/authentication/token"
-H "Content-Type: multipart/form-data"
-F "token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9......"
-F "profile=my_erp_profile_name"
-F "locale=no"
-F "redirect_to=/invoices"
-F "session_id=erp_users_session_id"
<!DOCTYPE html>
<html>
<head></head>
<body>
<form action="https://autointerface-embeddable-stage.maventa.com/authentication/token" method="POST" target="_blank">
<fieldset>
<legend>Authentication using token</legend>
<br/>
<label>token:</label>
<input type="text" name="token" size="100" />
<br/>
<label>session_id:</label>
<input type="text" name="session_id" size="70" />
<br/>
<label>redirect_to:</label>
<input type="text" name="redirect_to" size="70" />
<br/>
<label>profile:</label>
<input type="text" name="profile" size="40" />
<br/>
<br/>
<input type="submit" value="Log in"/>
</fieldset>
</form>
</body>
When the token is about to expire a new token needs to be obtained exactly the same way as in (Step 1).
The token then needs to be passed to the renew endpoint in EUI, combined with the session_id generated in the initial request. If you are able to extract/use the session cookie from the browser component it’s possible to use that when renewing the token, then there is no need to pass and use the session_id.
curl -X POST "https://autointerface-embeddable-stage.maventa.com/authentication/renew"
-H "Content-Type: multipart/form-data"
-F "token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZGVudGl0eSI6InVzZXIiLCJ1c......"
-F "session_id=erp_users_session_id"
function start_user_session(session_id, token) {
monitor_session_token(session_id, token.access_token); // Start waiting for the token to expire
open_browser_window(session_id, token.access_token); // Open browser component with the token
}
function monitor_session_token(session_id, token) {
setTimeout(function(){
if(user_session_active(session_id)) {
renew_token(session_id);
} else {
// user has closed the EUI window
}
}, token.expires_in - 60*5);
}
function renew_token(session_id) {
token = fetch_token();
if(post_new_token_to_eui(session_id, token.access_token) == 200) {
monitor_session_token(session_id, token);
}
}
token = fetch_token(); // Fetch token from AX
session_id = generate_uuid(); // Generate an ID for future reference
start_user_sesion(session_id, token);
EUI is highly customisable and every ERP can create their own look and feel of it. You can decide what to show to your end customers through the EUI and what should be hidden from them. For example if there is no invoice receiving capabilities in the ERP, received invoices list can be hidden and as well all the invoice receiving related settings. Customised view will greatly improve the user experience by always provide only useful information to the end customers. Customisation of the EUI is a really cool feature.
Customisation can be done using the ERP profiles and optional setup parameters:
ERP profiles are the main way to customise the views and are created for each ERP using the EUI. Using profile in a call toward EUI will load the ERP specific view. ERP profiles are created and modified by AutoInvoice team based on the ERP’s needs and requirements. So before you start to build the integration towards the EUI, please contact AutoInvoice support and ask for an EUI profile. One ERP can have multiple profiles. For example one for each version of the system or if you have different customer groups and would like to show them different content based on what functionalities they have in use.
...&profile=name_of_the_profile
When we add something big to the EUI for example a new service or functionality we will always contact all the EUI ERPs if they wish to have that new service visible also to their customers. Using EUI comes really handy by reducing the time to market of new services. Of course it is good to keep in mind that some of the new services might also require some changes from the ERP side or to the API integration but some services work just fine only through the EUI.
Profiles are great way of setting up the EUI look and feel, but if you want to have further control use the EUI setup parameters. EUI setup parameters have the same structure as the profiles and those can be used in combination with a profile. EUI setup params will override any setting from the profile so if you want to have a bit different views for one specific customer you can do it by using setup parameters. Empty values for any EUI setup parameter, equals false.
Let’s say that you have few customers that do not receive invoices through your ERP at all and you want to provide them a different view than for the rest of your customer by hiding all that is related to the invoices receiving:
EUI setup parameters will look like:
...&setup[sections][invoices][inbound]=false
&setup[sections][settings][invoice][receiving]=false
Here is a list of setup parameters you can use to hide or show parts of the EUI. If you wish to hide or show something that is not on this list please contact us and we will see if can fulfill your request.
With direct URLs customers can be redirected straight to the page you want. In the part of the ERP where invoices are handled could be a direct link to the invoices list of the EUI. And in the part where there are all the setting there could be a link to open up a settings page of the EUI. You can also have direct link for only showing details of an one invoice if you for example want to integrate the EUI invoice details as being part of the invoice details shown in the ERP.
OP Laskulaina invoice credit service enables companies to use their sales invoices (EUR) as collateral for a loan. When the service is in use each sent invoice will increase the amount of a loan the company can withdraw if they wish so, and only the amount they need at the time.
The service offers help in situations where the company has sales receivables and would benefit from immediate funds without having to wait for due dates that are far in the future. It is an excellent tool for managing cash flow and working capital, such as timely payment of wages, taxes and other obligatory payments. This service has been developed together with the OP Bank (Osuuspankki).
When the service is in use, loans can be withdrawn just by a click of a button without any loan negotiations or long waiting time. The service calculates the funding available against invoices sent. It is 80 % of the total amount of the invoice. If the total amount is 10 000 €, the company will receive a loan promise of 8 000 €. The limit granted to the company can be up to 1 million euros. All sent invoices need to have OP’s bank account details and transfer clause added but other than that basically all the rest is handled on AutoInvoice and OP side.
The interest is paid only on the daily balance of the withdrawn loan, there are no other fees or costs involved. The service’s interest is 1% to 2% monthly rate, applied to your daily credit balance. All credit operations are automated and each invoice payment will automatically reduce the credit balance, thus effectively lowering the interest payment.
OP Laskulaina - Invoice Credit Service is available to all Finnish companies, independent of which bank’s services they are using.
If a company has withdrawn a loan or there is interest to pay the money OP gets from the invoice payments will be used for those. If no loan is withdrawn or there is no interest left to pay, OP will pay the full amount directly to the sender.
The service’s interest is 1% to 2% monthly rate, applied to your daily credit balance. Each invoice payment will automatically reduce the credit balance, thus effectively lowering the interest payment. Loan interest is capitalized at the turn of the month. If there has been a loan withdrawn even for a day during the past month there will be interest that is paid from the invoice payments that comes into OP’s account at the beginning of the month.
Repayment % (how big part of an invoice is used for the loan repayment) is also something that the company can decide themselves within certain limits.
Step 1: Make sure your ERP meets all the requirements stated in the previous chapter. Before starting to build the integration you will need to be in contact with our support. The service requires vendor specific configurations from our end to enable the usage of the API.
Step 2: Call GET /v1/services/op_invoice_credit/offer
to get an offer for OP Laskulaina before activating the service.
This step is optional to do but allows you to build a better customer experience. Using this method the customer can find out how big of a credit limit they would get from OP, before going through the whole activation process. And if they don’t get an offer, they don’t have to go through the activation process to find that out.
Step 3: Call PUT /v1/services/op_invoice_credit
to initiate the activation. In order to get the service activated an electronic agreement between the company and OP needs to be filled and signed by a person having authorized signatory rights for the company.
Signing of the electronic document requires authorized persons to authenticate themselves using their personal online bank identifiers or mobile signature. Authentication and signing process is done on the OP side through their own webpage. This method returns a link (activation_url) where the end customer should be redirected to do the signing.
Parameter | Description |
---|---|
contact_email | Contact email address for your company |
iban | Your IBAN (Company’s own account details). IBAN that OP uses for paying the money they get from the receivers |
bic | Bank identification code e.g. DABAFIHH |
bank | Name of your bank |
Step 4: Call GET /v1/services/op_invoice_credit
to finalize the activation.
This method will return you the OP’s virtual IBAN and the transfer clause that both need to be added to all the invoices sent from that customer’s account. So one pre-requirement to use this service is to be able to create new accounts on the ERP side and to switch using that account number on the sales invoices.
Once the service is activated and the customer has sent some invoices, they will get available credit and can make withdraws when needed.
You can freely choose what kind of user interface to build for checking the amount available credit and making a withdrawal. For inspiration we have built something ourselves.
Use GET /v1/services/op_invoice_credit/available_credit
to check the credit balance.
Use POST /v1/services/op_invoice_credit/withdrawal
to make a withdrawal
There are additional settings you can show to the user and allow them to modify if they want.
Call GET /v1/services/op_invoice_credit/settings
to see what the current settings are and what is the offer OP could give. The method returns two JSON objects “current” and “offer” with the same exact structure.
If there is an offer where some values are different, and the customer would like to update their settings, you can call POST /v1/services/op_invoice_credit/settings
with the desired values.
Sender is responsible for handling invoice sending related errors and for making sure invoice reaches the receiver. We highly recommend to have a proper error handling in place on the ERP side. Possibility to reroute an failed invoice (API or UI).
OP invoice credit account statement is in SEPA XML format. The SEPA XML file is fetched using an API endpoint GET /v1/services/op_invoice_credit/account_statement
and by defining the date for which to fetch the transactions (YYYY-MM-DD). Even though this file is not coming through the normal WS channel like all the other account statements it should still be processed in the same way / in the same process by the ERP. Payments, loan repayments and interest payments should be targeted correctly in the ERP side to mark the invoices as paid.
File is fetched from the previous day and it is returned only when it is ready (ready = no unclear/untargeted payments). If the file is not returned it should be refetched until received. In most cases the file from yesterday should be ready by the next morning. Good practise is to fetch it for example at 7 o’clock in the morning and if not received try every hour until afternoon and then a few times a day for the next 5 days.
Empty file means that there were no transactions from that given day.
{
"code" : "invalid_parameter",
"Message": "Request parameters are invalid",
"Details": [
"unmatched _payments"
]
}
{
"code" : "internal_server_error",
"Message": "An internal error has occurred",
"Details": null
}
You can find the specifications for account statement here. And below we have examples on each of the events that can be present on the OP’s SEPA XML:
Incoming payments (when the receiver has paid the invoice with the OP’s IBAN) (CRDT=deposit) - VIITESIIRTO.
AcctSvcrRef = original invoice number.
The invoice number is 211961 and the total sum received is 2222.25. Out of this deposit OP has used 130.57 to interest payment (see the example of Payments used for interest payments) and the rest 2091.68 to loan repayment (see the examples of Payments used for loan repayments) 130.57 + 2091.68 = 2222.25. Same invoice number is in all of the events.
<Ntry>
<NtryRef>0</NtryRef>
<Amt Ccy="EUR">2222.25</Amt>
<CdtDbtInd>CRDT</CdtDbtInd>
<Sts>BOOK</Sts>
<BookgDt>
<Dt>2021-08-02Z</Dt>
</BookgDt>
<ValDt>
<Dt>2021-08-02Z</Dt>
</ValDt>
<AcctSvcrRef>211961</AcctSvcrRef>
<BkTxCd>
<Domn>
<Cd>PMNT</Cd>
<Fmly>
<Cd>RCDT</Cd>
<SubFmlyCd>ESCT</SubFmlyCd>
</Fmly>
</Domn>
<Prtry>
<Cd>VIITESIIRTO</Cd>
<Issr>FFFS</Issr>
</Prtry>
</BkTxCd>
<NtryDtls>
<TxDtls>
<AmtDtls>
<TxAmt>
<Amt Ccy="EUR">2222.25</Amt>
</TxAmt>
</AmtDtls>
<BkTxCd>
<Domn>
<Cd>PMNT</Cd>
<Fmly>
<Cd>RCDT</Cd>
<SubFmlyCd>ESCT</SubFmlyCd>
</Fmly>
</Domn>
<Prtry>
<Cd>VIITESIIRTO</Cd>
<Issr>FFFS</Issr>
</Prtry>
</BkTxCd>
<RltdPties>
<Dbtr>
<Nm>MAKSAJA 1 OY</Nm>
</Dbtr>
<DbtrAcct>
<Id />
</DbtrAcct>
</RltdPties>
<RmtInf>
<Strd>
<CdtrRefInf>
<Tp>
<CdOrPrtry>
<Cd>SCOR</Cd>
</CdOrPrtry>
</Tp>
<Ref>00000000333180290261</Ref>
</CdtrRefInf>
</Strd>
</RmtInf>
<RltdDts>
<AccptncDtTm>2021-08-02T00:00:00.000Z</AccptncDtTm>
</RltdDts>
</TxDtls>
</NtryDtls>
</Ntry>
Loan repayments (DBIT = withdrawal) - CL_PMT_FROM_BUYER_CL
<Ntry>
<NtryRef>1</NtryRef>
<Amt Ccy="EUR">2091.68</Amt>
<CdtDbtInd>DBIT</CdtDbtInd>
<Sts>BOOK</Sts>
<BookgDt>
<Dt>2021-08-02Z</Dt>
</BookgDt>
<ValDt>
<Dt>2021-08-02Z</Dt>
</ValDt>
<AcctSvcrRef>211961</AcctSvcrRef>
<BkTxCd>
<Domn>
<Cd>PMNT</Cd>
<Fmly>
<Cd>RCDT</Cd>
<SubFmlyCd>ESCT</SubFmlyCd>
</Fmly>
</Domn>
<Prtry>
<Cd>CL_PMT_FROM_BUYER_CL</Cd>
<Issr>FFFS</Issr>
</Prtry>
</BkTxCd>
<NtryDtls>
<TxDtls>
<AmtDtls>
<TxAmt>
<Amt Ccy="EUR">2091.68</Amt>
</TxAmt>
</AmtDtls>
<BkTxCd>
<Domn>
<Cd>PMNT</Cd>
<Fmly>
<Cd>RCDT</Cd>
<SubFmlyCd>ESCT</SubFmlyCd>
</Fmly>
</Domn>
<Prtry>
<Cd>CL_PMT_FROM_BUYER_CL</Cd>
<Issr>FFFS</Issr>
</Prtry>
</BkTxCd>
<RltdPties>
<Cdtr>
<Nm>OP LASKULAINA/ OP VÄHITTÄISASIAKKAAT̈ OYJ</Nm>
</Cdtr>
<CdtrAcct>
<Id>
<IBAN>FI4350000120469282</IBAN>
</Id>
</CdtrAcct>
</RltdPties>
<RmtInf>
<Ustrd>CL_PMT_FROM_BUYER_CL</Ustrd>
<Strd>
<CdtrRefInf>
<Tp>
<CdOrPrtry>
<Cd>SCOR</Cd>
</CdOrPrtry>
</Tp>
</CdtrRefInf>
</Strd>
</RmtInf>
<RltdDts>
<AccptncDtTm>2021-08-02T00:00:00.000Z</AccptncDtTm>
</RltdDts>
</TxDtls>
</NtryDtls>
</Ntry>
Interest payments (DBIT = withdrawal) - CL_PMT_FROM_BUYER_INTEREST
<Ntry>
<NtryRef>2</NtryRef>
<Amt Ccy="EUR">130.57</Amt>
<CdtDbtInd>DBIT</CdtDbtInd>
<Sts>BOOK</Sts>
<BookgDt>
<Dt>2021-08-02Z</Dt>
</BookgDt>
<ValDt>
<Dt>2021-08-02Z</Dt>
</ValDt>
<AcctSvcrRef>211961</AcctSvcrRef>
<BkTxCd>
<Domn>
<Cd>PMNT</Cd>
<Fmly>
<Cd>RCDT</Cd>
<SubFmlyCd>ESCT</SubFmlyCd>
</Fmly>
</Domn>
<Prtry>
<Cd>CL_PMT_FROM_BUYER_INTEREST</Cd>
<Issr>FFFS</Issr>
</Prtry>
</BkTxCd>
<NtryDtls>
<TxDtls>
<AmtDtls>
<TxAmt>
<Amt Ccy="EUR">130.57</Amt>
</TxAmt>
</AmtDtls>
<BkTxCd>
<Domn>
<Cd>PMNT</Cd>
<Fmly>
<Cd>RCDT</Cd>
<SubFmlyCd>ESCT</SubFmlyCd>
</Fmly>
</Domn>
<Prtry>
<Cd>CL_PMT_FROM_BUYER_INTEREST</Cd>
<Issr>FFFS</Issr>
</Prtry>
</BkTxCd>
<RltdPties>
<Cdtr>
<Nm>OP LASKULAINA/ OP VÄHITTÄISASIAKKAAT̈ OYJ</Nm>
</Cdtr>
<CdtrAcct>
<Id>
<IBAN>FI4350000120469282</IBAN>
</Id>
</CdtrAcct>
</RltdPties>
<RmtInf>
<Ustrd>CL_PMT_FROM_BUYER_INTEREST</Ustrd>
<Strd>
<CdtrRefInf>
<Tp>
<CdOrPrtry>
<Cd>SCOR</Cd>
</CdOrPrtry>
</Tp>
</CdtrRefInf>
</Strd>
</RmtInf>
<RltdDts>
<AccptncDtTm>2021-08-02T00:00:00.000Z</AccptncDtTm>
</RltdDts>
</TxDtls>
</NtryDtls>
</Ntry>
Payments done by the OP to the company’s own account in case there was no loan or interest left to pay (DBIT = withdrawal). NOTE! This information will also be on the company’s own account’s SEPA statement. So keep this in mind when targeting payments.
RltdPties/Cdtr/Nm - Name of your company RltdPties/CdtrAcct/Id/IBAN - Your company’s own IBAN number. Given in the activation of the service
<Ntry>
<NtryRef>1</NtryRef>
<Amt Ccy="EUR">16376.68</Amt>
<CdtDbtInd>DBIT</CdtDbtInd>
<Sts>BOOK</Sts>
<BookgDt>
<Dt>2021-08-10Z</Dt>
</BookgDt>
<ValDt>
<Dt>2021-08-10Z</Dt>
</ValDt>
<AcctSvcrRef>207650</AcctSvcrRef>
<BkTxCd>
<Domn>
<Cd>PMNT</Cd>
<Fmly>
<Cd>RCDT</Cd>
<SubFmlyCd>ESCT</SubFmlyCd>
</Fmly>
</Domn>
<Prtry>
<Issr>FFFS</Issr>
</Prtry>
</BkTxCd>
<NtryDtls>
<TxDtls>
<AmtDtls>
<TxAmt>
<Amt Ccy="EUR">16376.68</Amt>
</TxAmt>
</AmtDtls>
<BkTxCd>
<Domn>
<Cd>PMNT</Cd>
<Fmly>
<Cd>RCDT</Cd>
<SubFmlyCd>ESCT</SubFmlyCd>
</Fmly>
</Domn>
<Prtry>
<Issr>FFFS</Issr>
</Prtry>
</BkTxCd>
<RltdPties>
<Cdtr>
<Nm>Yritys Oy</Nm> OP Laskulainaa käyttävät yrityksen nimi
</Cdtr>
<CdtrAcct>
<Id>
<IBAN>FI5841000000000000</IBAN>
</Id>
</CdtrAcct>
</RltdPties>
<RmtInf>
<Strd>
<CdtrRefInf>
<Tp>
<CdOrPrtry>
<Cd>SCOR</Cd>
</CdOrPrtry>
</Tp>
<Ref>15240152428</Ref>
</CdtrRefInf>
</Strd>
</RmtInf>
<RltdDts>
<AccptncDtTm>2021-08-10T00:00:00.000Z</AccptncDtTm>
</RltdDts>
</TxDtls>
</NtryDtls>
</Ntry>
OP can also grant loans against consumer invoices but it is a company specific decision that they do case by case. If you want to send your consumer invoices also through the service, you will need to contact OP’s customer service (asiakaspalvelu@op-laskulaina.fi) to request this feature. Later there will be an API call to do that. If you activate consumer invoice sending, remember to add OP’s IBAN to your bank agreements (SI-message type CHANGE) before starting to use OP’s IBAN in your consumer invoices.
You will need to send CHANGE type senderinfo messages (SI-messages) to each bank you have the consumer agreement with. In this CHANGE SI-message you will need to add OP’s virtual IBAN number as a new seller account (note! we do not recommend overriding the existing seller account information but instead just add that as a new one). If there is a functionality to create and send the SI-messages directly from your ERP you can most likely do the change easily through that. If you are unsure if there is such functionality in your ERP or you don’t know how to use it contact your ERP support team. After the messages are created they can be sent through our UI or via the API. More information about SI-messages and a link to message_send method to use for sending.
In case consumer invoices are not routed through the service, do not use OP’s IBAN on these invoices.
In case the receiver pays the invoice using company’s own payment information instead of the OP’s use POST /v1/services/op_invoice_credit/direct_payment
to inform OP about that. Mark the invoice to be directly paid to the sender instead of the OP’ account by giving the invoice id (uuid) in the API call.
Q: Company has sent an invoice for 10 000 € and withdrawn a loan of 8000 €. After this they realize that they need to credit the sent invoice. What happens?
A: Next invoices that are sent and paid with OP’s account information will be used for the loan repayment. If no new invoices are sent, the withdrawn loan will accumulate the interest. Company might want to contact OP and agree on some other repayment manner.
The service can be closed only when there is no withdrawn loan left unpaid. If there is still some interest left OP will collect those directly from the company. API for closing the service is not yet available. Contact our support if you wish to close the service.
API to use: REST API
In addition to invoices AutoInvoice also enables usage of other trading documents.
Companies and governments have a growing interest towards full procurement automation. eOrdering automates the purchase-to-pay process and offers benefits to different teams involved in the process and the organization as a whole. These benefits include:
Automation of ordering, for example usage of structured catalogues as a basis for ordering, simplifies the information exchange and offers benefits for both parties in the procurement chain, since different steps like approval, order picking and invoicing can be automated to name a few.
In order to start sending documents you have to be able to produce Peppol BIS or EHF. Sending of documents happens by sending a document file (XML) and specifying other necessary data as parameters. For receiving documents, you have to first register the company as a document receiver and then activate different document types and profile versions. Different document types supported by AutoInvoice are described below.
Recipient and the operator needs to be specified during the send. Senders and receivers in PEPPOL are identified using ISO6523 identifiers. Depending on the country, they can be organization IDs, VAT IDs, public sector IDs, for example
Norway - Organisation number (prefix 0192) OVT: 0192:1111111111 Operator: PEPPOL
Finland - OVT (prefix 0037) OVT: 0037:111111111 Operator: PEPPOL
Read more information about service activation from here and sending and receiving of documents from here.
Through Peppol network the supported document types by AutoInvoice are:
Read more about different Peppol BIS documents from here.
Check full list of supported document types in AX from here.
Partner and AutoInvoice agree about the way the end customers (users of partner’s software) are invoiced for their transactions and use of AutoInvoice services.