Search

Embeddable User Interface

The Embeddable User Interface (EUI) allows ERP integrators to embed Maventa’s interface directly into their product. End customers get access to Maventa features and services without waiting for ERP-side development, reducing time to market for new capabilities.

What to handle via API vs EUI

Although most functionality is available through the EUI, some functions are best handled through a direct API integration:

Everything else can be handled through the EUI:

How the EUI looks

EUI view for settings

EUI view for settings

Close

How to take the EUI into use

Decide what to show and how

Start by deciding which parts of the EUI your end customers need. Then consider how to present those views:

You do not need anything from Maventa to start building. When no profile is given, the EUI loads a default profile with every view and setting enabled. Hide the parts you do not need with setup parameters, and request an ERP profile once you know what your product should show.

Choose an embedding method

Maventa offers two embedding methods:

  1. Script embedding: include a script tag on your HTML page. Recommended for products that run in the user’s browser.
  2. Iframe embedding: use an iframe or similar solution. Note that cross-domain content loading may cause issues with this method.

Both methods require fetching an access token for the company.

Hosting domains

The EUI is hosted under the following domains:

Production:

Testing:

Fetch an access token for the company

The EUI uses token-based authentication with company_uuid, user_api_key, and vendor_api_key.

Fetch the token from the AutoXChange OAuth2 endpoint using the following parameters:

Parameter Description Value/example
vendor_api_key The vendor API key for the ERP 37fc1ebc-dd4f-11ea-87d0-0242ac130003
scope The scope required. eui is mandatory eui
grant_type The OAuth2 grant type client_credentials
client_id The company UUID 298c6ce2-dd4f-11ea-87d0-0242ac130003
client_secret The user API key 32d74434-dd4f-11ea-87d0-0242ac130003

Endpoints:

cURL example for fetching a 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"

Example of a successful token response

{
  "access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZGVudG......",
  "token_type": "bearer",
  "expires_in": 3600,
  "scope": "eui"
}

Once you have an access token, use it with your chosen embedding method: script embedding or iframe embedding.

Method 1 - Script embedding

Add a <script> tag to your HTML page:

<body>
    <div style="height: 1024px" id="eui-container"></div>
    <script src="https://autointerface-embeddable.maventa.com/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 Description Value/example
src Main URL for EUI https://autointerface-embeddable.maventa.com/embed
data-token The access_token from the OAuth2 response eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9….
data-container-id Must match the id of the container div. The EUI renders inside this element eui-container
data-default-path Page to open on load. See direct URLs /invoices
data-profile The ERP’s profile name for customisation. Optional my_erp_profile_name
data-locale Language of the EUI (en, fi, se, no, dk, nl) fi (default: en)
data-setup-* Setup parameters for further customisation data-setup-top_menu=”false”
div style=”height:..” A height must be set on the container, either static or dynamic. Without it, the EUI will not be visible height: 1024px

In the example above, the EUI opens directly to the invoices page with the language set to English and the top menu hidden.

With script embedding, there is no way to renew the token. The access token expires after one hour, ending the user’s session. Make sure your application allows users to refresh the page and re-authenticate when the token expires.

Method 2 - Iframe embedding

Endpoints:

  Testing Production
Get access token https://ax-stage.maventa.com/oauth2/token https://ax.maventa.com/oauth2/token
Initiate EUI session https://autointerface-embeddable-stage.maventa.com/authentication/token https://autointerface-embeddable.maventa.com/authentication/token
Renew token https://autointerface-embeddable-stage.maventa.com/authentication/renew https://autointerface-embeddable.maventa.com/authentication/renew

Monitor token expiry for automatic session renewal

While the EUI session is active, monitor the token expiry time. The expires_in attribute in the token response indicates how long the access token is valid. Deduct a few minutes from this value to avoid session interruptions. Stop the renewal process when the user closes the EUI or logs out.

To enable token renewal, pass a unique ID as the session_id parameter in the initial authentication request (see the next step). This ID associates the session with subsequent renewal requests.

If the token is not renewed before it expires, the session ends and the user must re-authenticate.

Open the EUI session in a browser component

Once you have a token, open the EUI in a browser component. Depending on the component’s capabilities, pass the token either in the POST body or in the Authorization header as a Bearer token.

Parameter Description Value/example
token The access_token from the OAuth2 response eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9….
profile The ERP’s profile name for customisation. Optional my_erp_profile_name
locale Language of the EUI (en, fi, se, no, dk, nl) no (default: the company’s country, falling back to en)
redirect_to Page to open on load. See direct URLs /invoices
session_id Unique session identifier (UUID recommended) erp_users_session_id
setup[...] Setup parameters for further customisation setup[menu][top_menu]=false

cURL for initiating an EUI session with POST

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"

HTML form example for token login

<!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>

Renew the token for an existing session

When the token is about to expire, fetch a new access token and pass it to the EUI renewal endpoint together with the session_id from the initial request. If you can extract the session cookie from the browser component, you can use that instead of the session_id.

cURL for renewing an EUI session token

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"

Companies that are not yet verified

If the company’s state is UNVERIFIED, the EUI shows a KYC authorisation form instead of the view that was requested. The end customer must complete the form before any other view opens, including views opened through a direct URL.

Take this into account when embedding the EUI contextually. A settings view embedded in the ERP’s settings page shows the KYC form as long as the company is unverified.

The KYC requirement is part of the ERP profile, so it can be turned off for a profile if your onboarding flow handles verification another way. Contact Maventa support to discuss this.

Customise your own view of the EUI

The EUI is highly customisable. Each ERP can control which views and features are visible to end customers, for example hiding the received invoices list if the ERP does not support invoice receiving. Customisation is done through setup parameters, ERP profiles, or both.

Setup parameters

Setup parameters are the fastest way to customise the EUI. They need nothing from Maventa, they are set per request, and they override the profile. Use them to start building before you have a profile, and to adjust views for individual customers without creating a separate profile.

How you pass them depends on the embedding method:

Script embeddingIframe embedding

Pass setup parameters as data-setup-* attributes on the <script> tag.

<script src="https://autointerface-embeddable.maventa.com/embed"
        data-token="eyJ0eXAiOiJKV1QiLCJraWQiOiJjODJhZTdiZTU...."
        data-container-id="eui-container"
        data-setup-sections-invoices-inbound="false"
        data-setup-sections-settings-invoice-receiving="false"
></script>

Pass setup parameters as setup[...] parameters in the authentication request or query string.

...&setup[sections][invoices][inbound]=false
&setup[sections][settings][invoice][receiving]=false

Only the exact values true and false are recognised. Any other value, including an empty one, is ignored, and the profile setting applies instead. Setting a parameter to an empty value does not hide anything.

List of setup parameters

Use these parameters to show or hide specific parts of the EUI. To request a parameter that is not listed, contact Maventa support.

Menus

Controls Script attribute Iframe parameter Accepted values
All menus, both top and left data-setup-menu setup[menu] false only
The top menu data-setup-top_menu setup[menu][top_menu] true, false
The left menu data-setup-left_menu setup[menu][left_menu] true, false
The log out button in the menu data-setup-logout_button Not available true, false

Invoice lists

Controls Script attribute Iframe parameter Accepted values
The received invoices list data-setup-sections-invoices-inbound setup[sections][invoices][inbound] false only
The sent invoices list and the invoices in error state list data-setup-sections-invoices-outbound setup[sections][invoices][outbound] false only
The link back to the previous invoices layout data-setup-sections-invoices-show_to_previous_invoices_layout Not available true, false

Settings

Controls Script attribute Iframe parameter Accepted values
The entire settings tab in the top menu data-setup-sections-settings setup[sections][settings] false only
All company settings in the left menu data-setup-sections-settings-company setup[sections][settings][company] false only
Company details data-setup-sections-settings-company-details setup[sections][settings][company][details] true, false
Company address information data-setup-sections-settings-company-address setup[sections][settings][company][address] true, false
All invoice settings in the left menu Not available setup[sections][settings][invoice] false only
Invoice receiving settings data-setup-sections-settings-invoice-receiving setup[sections][settings][invoice][receiving] true, false
Invoice sending settings data-setup-sections-settings-invoice-sending setup[sections][settings][invoice][sending] true, false
Invoice layout settings data-setup-sections-settings-invoice-layout_settings setup[sections][settings][invoice][layout_settings] true, false
Invoice notification settings data-setup-sections-settings-invoice-notifications setup[sections][settings][invoice][notifications] true, false

To hide all invoice settings with script embedding, hide the four individual invoice settings above.

Other documents

Controls Script attribute Iframe parameter
The other documents section data-setup-sections-documents-order setup[sections][documents][order]
  data-setup-sections-documents-order_response setup[sections][documents][order_response]
  data-setup-sections-documents-catalogue setup[sections][documents][catalogue]
  data-setup-sections-documents-catalogue_response setup[sections][documents][catalogue_response]

The four document parameters currently work as a single switch. Setting any one of them turns the whole other documents section on, whatever value is given, and the values themselves are ignored. To show or hide individual document types, request an ERP profile.

ERP profiles

An ERP profile is a named set of customisations that Maventa stores for you. Everything in a profile applies automatically, so your integration does not have to pass setup parameters on every request. Profiles also cover settings that setup parameters do not reach, such as which invoice attachment formats are available and which bank networks are shown.

Profiles are created by the Maventa team based on the ERP’s requirements. Once you have one, pass its name with your chosen embedding method:

...&profile=name_of_the_profile

Key points about profiles:

Direct URLs

Direct URLs open the EUI on a specific page. Use these to provide contextual navigation, for example linking to the invoice list from the ERP’s invoicing section, or opening the settings page from the ERP’s settings area. You can also link directly to a single invoice’s details.

Available URLs

Dashboard

  • / Dashboard (currently a blank page with menus)

Invoice lists

  • /invoices Received invoices
  • /invoices/outbound Sent invoices
  • /invoices/error Sent invoices in error state

Invoice details

  • /invoices/{invoice_id} Details for a received invoice
  • /invoices/outbound/{invoice_id} Details for a sent invoice

Invoice settings

  • /settings/invoice/sending/index Invoice sending settings. Opens the general tab. Add /general, /layout, /email, or /print to open a specific tab
  • /settings/invoice/notifications/index Invoice notification settings
  • /settings/invoice/receiving/index Invoice receiving settings (network activation, scanning service)
  • /settings/invoice/bank_network_no/index Consumer invoicing settings (Norway)
  • /settings/invoice/bank_network_fi/index Bank network activation (Finland)
  • /settings/invoice/bank_network_se/index Bank network activation (Sweden)
  • /settings/invoice/email_reports Email report settings

Company settings

  • /settings/company/details/index Company details
  • /settings/company/address/index Company address information

Other document lists

  • /documents Received documents
  • /documents/outbound Sent documents
  • /documents/error Sent documents in error state
  • /order and /order/outbound Received and sent orders
  • /order_response and /order_response/outbound Received and sent order responses
  • /catalogue and /catalogue/outbound Received and sent catalogues
  • /catalogue_response and /catalogue_response/outbound Received and sent catalogue responses

Other document settings

  • /settings/document/receiving/index Receiving settings for non-invoice documents

Additional services

  • /settings/additional_services/visma_scanner_receiving/index Visma Scanner activation
  • /settings/additional_services/detect/index Detect activation
  • /settings/additional_services/maventa_reskontravahti/index Receivables service settings (Finland)
  • /settings/additional_services/supplier_activation Supplier activation
  • /settings/additional_services/request_e_invoices Request e-invoices

Services

  • /finder Finder (search for e-invoice addresses)
  • /receivables Receivables management (Finland, Amili Kassavirta and Amili Perintä only)
  • /consumer_vendor_registry Consumer agreements (Norway)

Receivables details

  • /receivables/{invoice_id} Details for a receivable assignment

Session

  • /sign_out Signs the user out and ends the EUI session

The receivables views in the EUI cover the Amili Kassavirta and Amili Perintä services only. Other debt collection solutions currently have no UI in the EUI.

Hiding a view removes it from the menus, but most direct URLs still open the page behind it. The invoice lists are the exception. If the received invoices list is hidden, /invoices redirects to /invoices/outbound, and if both invoice lists are hidden, neither URL opens anything.

Supported browsers

Back to top

AI Chat Support 24/7

  • Get help via AI chat available 24/7 whenever it suits you
  • Chat extensively uses Maventa support pages, websites, and blogs in its answers
  • If you need assistance that the AI cannot provide, you can also ask a customer service agent to join the conversation
  • Support requests processed Monday to Friday
Cancel Open chat

Got feedback?

Did you not find what you were looking for? Or was something explained unclearly? Or just want to share your thoughts? We are happy to hear your feedback!

Note: This form is not a way to get support, this is only for feedback for the documentation website. If you need support, please contact Maventa support.

Integration Guide Services & Reach API Specification Changelogs Integration guide Getting Started Invoice sending Consumer Invoicing Printing Email invoicing Invoice receiving Scanning Detect Fraud reporting Webhooks Reference implementations Maventa Connector Embeddable User Interface Peppol Network Document Exchange Invoice Response Self-billing support Invoicing formats Validation Peppol BIS 3.0 Finvoice 3.0 Document types and type codes Maventa JSON (table) Maventa JSON (json schema) Companies and Settings Department Company Users Billing Accounts receivable Ropo's reminder and collection service Amili Kassavirta Amili Perintä Receivables webhooks Services and reach Maventa services and reach e-invoicing in Finland Mass Printing Service e-invoicing in Sweden e-invoicing in Norway e-invoicing in Denmark e-invoicing in the Netherlands e-invoicing in Belgium e-invoicing in Germany e-invoicing in Estonia e-invoicing in Latvia e-invoicing in Poland e-invoicing in Italy e-invoicing in France e-invoicing in Spain Api specification API overview Getting Started Common & authentication API Invoices API Documents API Companies & settings API Lookups API Detect API Validator API Receivables API Billing API Scanning API B2CFI API B2CNO API B2CSE API Partner API Getting Started Account Configuration API Methods Invoice Sending API Methods Invoice Receiving API Methods B2C Norway API Methods B2C Finland API Methods Other API Methods Changelogs Product changelog Developer Changelog
Clear Send

Enter your credentials to Maventa testing environment, to authenticate and try things out with the Swagger UI. This will fetch a Bearer token using OAuth2 with the endpoint POST https://ax-stage.maventa.com/oauth2/token. The token is stored in your browser's session storage (cleared when you close the tab) and used in Swagger calls done from this documentation website. The token is valid for 1 hour.

Never use your production credentials here. This is only for testing the Maventa test environment in the Swagger UI.
Reset All None
eui global company lookup document:receive document:send invoice:receive invoice:send company:read company:write validate receivables:assignments analysis billing:reports partner:invoice_delivery_actions partner:lookups partner:takeovers partner:lyanthe_scan_service fi_bank_message:send fi_bank_message:receive
Cancel Sign In