Company account management & Know Your Customer

You can use either the SOAP API , REST API or the web user interface to open and manage company accounts. However, the user interface requires manual work so if the integration will have multiple companies or a complex set-up, API is recommended.

How to open and activate company accounts

  1. Create company account
  2. Configure settings for the account
  3. Verify the account (KYC) either with
    1. Visma Sign - customer signs electronically to authorise account (default)
    2. Partner’s own KYC process

1. Create company account

Call the API to register a new company with basic settings.

SOAP

  • register_with_password The method registers a new company account with default settings and adds/creates a user based on the email in the user_email parameter

Note how the user creation works!

  • If user given in the user_email parameter doesn’t exist, a new user is created based on email and added to the company
  • If user given in the user_email parameter exists, this existing user is added to company

In situations where a new user is created, method returns unique company_uuid and user_api_key. If method is called with an existing user, for security reasons only company_uuid is returned.

REST

Creating a company requires a vendor key and a user API key. You may use an existing user or create a new one.

Existing company

There can be only one company per business id. If the business id already exists in Maventa you will get an error message if you try to register it again (BID ALREADY TAKEN).

In REST API you can check beforehand company’s availability with

To get access to already created company contact Maventa support (support@maventa.com).

2. Configure account settings

When company account has been created, it can be configured by updating company settings and adding new users.

Note To be able to send, receive and activate services you need to first verify the account by Know You Customer process.

SOAP

API methods:

You can update the receiving setting (enable/disable) also using company_invoice_receiving. Note, that invoice receiving needs to be enabled in order to register company account to Peppol network or to use additional services.

REST

API methods:

3. Verify account / Know Your Customer process

Verifying the account is a step that is done to know that a person with right to represent the company has confirmed and approved registration to Maventa service, before account is activated..

This Know Your Customer process is important to prevent potential misuse of service. Before verification is completed account cannot be used for sending or receiving. To use the account it is also required that the customer has accepted the Terms of Service .

Note that for Finnish companies, verification creates also automatically the request to open bank network.

KYC options

The KYC process can happen on the integrators side or with Visma Sign electronic signature service when customer’s account is opened in to Maventa.

If you want to use own KYC process, you need to check with Maventa that your process to authenticate the customer meets the verification requirements.

Visma Sign is always used if customer’s account is registered over Maventa UI.

Visma Sign verification

The account verification takes place with Visma Sign electronic signature service. A person who has rights to represent company (signing rights or power of attorney) authenticates strongly with bank credentials, BankID or mobileID and signs a document where they confirm that account can be taken into use for the company.

Strong authentication via Visma Sign is currently available for the following countries: Finland, Sweden, Norway, Denmark.

Integrators own KYC process

When customer has been already strongly authenticated on the integrator side the account can be taken in use without any additional signing from customer.

The integration must provide an identifier per each company to link to verification event on their side (e.g. contract number, signing eventID). If needed integrator has to be able to show that the KYC has happened.

APIs to use

  • Verification happens by calling API method after account has been created.
  • When the verification happens account status changes from unverified (-1) to verified (1) and the account is ready to be used.
  • In order to start sending and receiving invoices the company_state needs to be verified (1).
REST
SOAP
Verification statuses
Company_state Description
verified (1) Company is authorised and KYC has been completed. Account can be used to send, download and activate additional services.
unverified (-1) Authorisation required. Sending, downloading and activating additional services is not possible.
unknown (0) Authorisation functionality not in use. Account has not been verified with authorize_companies method, but can be used to send, download and activate additional services. This status is possible for older accounts / integrations.

NOTE! Sending or receiving of invoices is not allowed if company_state is unverified (-1) and API will return error message “Unauthorized”. Invoices can be sent and received after the authorization is done.

Verification webhooks

You can use webhooks to get notifications when company status changes.

You can also register webhook to monitor bank network opening for Finnish companies. The request to open bank network is sent after the verification is completed. The opening is approved by third party (bank) and it usually takes couple of days.

Visma Sign verification process in production
  • The signee/authoriser needs to be person who has rights to represent company (signing rights or power of attorney).
  • You can use parameter locale to select the language for the PDF document.
  • The invitation to sign is valid for 7 days. If signing is not done in this time, new request needs to be sent.
  • Company’s authorisation status is automatically updated from Visma Sign every 15 minutes.
Visma Sign verification process in testing and Visma sign testing credentials

In testing, the flow is similar as above but there are no automatic updates. You need to call API to get the company’s status updated.

You can complete Visma Sign authorization request with these test credentials:

  • user ID: testtest@test.test
  • password: xO70MVYD0CXaKcQ2

For bankID you can use Nets test users from https://www.nets.eu/developer/e-ident/eids/Pages/testusers.aspx

Verify multiple accounts with one signing

In cases where the same signee has rights to represent multiple companies it is possible to use one signing to verify the accounts at the same time. For example in case of a housing company or accounting office that power of attorney for multiple customers. One API call can be used to authorize up to 50 companies in time. For the authorisation to work, the companies that are authorised need to be from the same country.

When this option is used the sign PDF contains a list of all companies to be verified.

Existing integrators moving to use KYC

The KYC functionality will work out of the box for new integrators, but if you are an existing integrator you need to contact your integration contact point to activate the KYC requirements for your vendor key. The functionality is first activated for your vendor_api_key in testing, so you can test the flow.

If KYC functionality has not been yet activated for your vendor you can still at this moment create companies and use them without calling authorisation methods and completing the AutoInvoice KYC process. If you call the authorisation API method for a company it will not trigger any actions- other than for Finnish companies, where calling the method triggers Visma Sign process to send bank network opening request.

How does it work in more detail if the KYC functionality is not activated?

  • When you register a company it will be created in status 0 = unknown. The account usage is not limited so it is fully operational
  • If you call company_auth_status it returns status 0
  • If you call authorize_companies it returns already authorised
  • For Finnish companies authorize_companies call initiates Visma Sign process for bank network opening request. The company_auth_status will remain 0 after signing

Please note that all integrators are required to use the KYC process after 1.7.2022

After that it will no longer be possible to create companies as before in status 0 = unknown but all companies have to complete KYC process to be able to send and receive invoices and activate services.

Example - Visma Sign verification

You have created company account, at this point authorisation status is (-1) = unverified. To initiate Visma Sign process to call authorize_companies / POST /v1/companies/authorizations API method.

After Visma Sign flow has been completed, account is set to verified state (1) and is ready to be used.

Example SOAP API request

<soapenv:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xmlns:xsd="http://www.w3.org/2001/XMLSchema"
  xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
  xmlns:sec="https://secure.maventa.com/">
  <soapenv:Header/>
  <soapenv:Body>
    <sec:authorize_companies soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
      <api_keys xsi:type="sec:ApiKeys">
        <user_api_key xsi:type="xsd:string">accesstoallcompaniestobeverified</user_api_key>
        <vendor_api_key xsi:type="xsd:string">vendorkey</vendor_api_key>
        <company_uuid xsi:type="xsd:string">acompanyuserhasaccessto</company_uuid>
      </api_keys>
      <auth_email xsi:type="xsd:string">emailofsigner@signer.com</auth_email>
      <company_ids xsi:type="sec:StringArray" soapenc:arrayType="xsd:string[1]">
        <xsd:string>513202b6-a681-4061-bfc0-23e4983fc070</xsd:string>
      </company_ids>
      <locale xsi:type="xsd:string">FI/SE/NO/EN/DK</locale>
      <options xsi:type="xsd:string"></options>
    </sec:authorize_companies>
  </soapenv:Body>
</soapenv:Envelope>

Example - Integrators own KYC process

You have created company account, at this point authorisation status is (-1) = unverified. To verify account call authorize_companies / POST /v1/companies/authorizations API method.

In the API call you must provide an identifier per each company to link to verification event (e.g. contract number, signing eventID).

After the API call, account is set to verified state (1) and is ready to be used.

Example SOAP API request

<soapenv:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xmlns:xsd="http://www.w3.org/2001/XMLSchema"
  xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
  xmlns:sec="https://secure.maventa.com/">
  <soapenv:Header/>
  <soapenv:Body>
    <sec:authorize_companies soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
      <api_keys xsi:type="sec:ApiKeys">
        <user_api_key xsi:type="xsd:string">accesstoallcompaniestobeverified</user_api_key>
        <vendor_api_key xsi:type="xsd:string">vendorkey</vendor_api_key>
        <company_uuid xsi:type="xsd:string">acompanyuserhasaccessto</company_uuid>
      </api_keys>
      <auth_email xsi:type="xsd:string"></auth_email>
      <company_ids xsi:type="sec:StringArray" soapenc:arrayType="xsd:string[1]">
        <xsd:string>company_uuid_to_be_verified</xsd:string>
      </company_ids>
      <locale xsi:type="xsd:string">FI/SE/NO/EN/DK</locale>
      <options xsi:type="xsd:string">{"authorization_method":how+identifierlinkingtoauthevent"}</options>
    </sec:authorize_companies>
  </soapenv:Body>
</soapenv:Envelope>

Company accounts over UI

New companies with a new user can be created for:

If you need to create a new company for an existing user, log-in to Maventa UI first.

Before production account can be used it needs to be verified using strong authentication and electronic signing. When the user logs in to the account for the first time, user needs to go through a set-up wizard where they add information of the company and configure some of the basic settings. The last step of the wizard is the company verification process with Visma Sign service. This process is the same as described within the Visma Sign verification process above, but in this case the signing is initiated from the UI.

Note

  • The language of the PDF document is defined based on company country.
  • The language of the Visma Sign invitation email is defined based on the language that is set for the user interface at the time the verification request is sent. E.g. when UI is in Finnish, Visma Sign email is sent in Finnish.

Partner accounts

In Maventa there are two type of accounts; Company accounts and Partner accounts. Company account is the default account type. Partner accounts are used by the integrating partners (ERPs and such with multiple customers).

The key difference between a Partner and a regular Company account is that Partner accounts have an own identifier, vendor_api_key, that is used to link actions to the partner company. The vendor api key is used for billing and reporting purposes. One Partner company can own many vendor_api_keys, for example one for each country they have customers in.

Integrators don’t need to worry about controlling the account types, all accounts registered to Maventa are first created as Company account and changed to account type Partner if and when needed by Maventa.

FAQ

Q: I am calling the method and it returns status unknown = 0, what does this mean?

A: It looks like the KYC / Visma Sign process has not been activated for your software’s vendor_api_key. See Existing integrators moving to use KYC here. Please contact your integration contact point or Maventa team to activate the functionality.

Q: I am testing Visma Sign in test environment, the signing has been done but the status is not updating. What is wrong?

A: There is a difference in status updating between stage and production. See Visma Sign testing here