---
title: "Getting Started"
canonical: https://documentation.maventa.com/integration-guide/getting-started/
---

This guide shows how Maventa enables seamless e-invoicing and document exchange through your financial system. It explains the available APIs, key capabilities, and market-specific requirements, helping you understand what is needed to start sending invoices, support consumer invoicing, or serve customers across different countries, whatever your business needs across e-invoicing and digital document exchange.

The Maventa APIs support a wide range of business use cases, including electronic invoicing for **B2B,** (Business-to-Business — commercial transactions between companies) **B2G** (Business-to-Government — invoicing directed at public sector entities) scenarios, consumer invoicing to bank networks and mobile applications, electronic ordering and other business document exchange, access to value-added services supporting purchase-to-pay and order-to-cash processes, as well as custom applications and import tools. Availability of specific features may vary depending on the country or market, so not all functionality is supported in every region.

## APIs available for integration

Maventa provides two APIs for integration: REST and SOAP. Both can be used, but not all functionality is available via the SOAP API. Going forward, new features and improvements will be delivered exclusively through the REST API.

### REST API

The REST API provides access to account management and e-invoicing services, as well as other business document flows such as order exchange. It also enables integration with advanced services supporting **P2P** (Purchase-to-Pay — the full cycle from purchasing goods to making payment) and **O2C** (Order-to-Cash — the full cycle from receiving an order to collecting payment) processes.

[View REST API docs](/api-specification/rest-api/getting-started/)

### SOAP API

The SOAP API provides access to account management and e-invoicing services, but is considered legacy and does not support all available features.

[View SOAP API docs](/api-specification/soap-api/getting-started/)

## Choosing the right integration approach

There are multiple ways to integrate with Maventa, depending on the services you want to offer and the level of automation you require. The following sections help you define the scope and depth of your integration.

### Integration scope - what you want to support

The integration scope defines which Maventa services you connect to and what functionality your users will have. When defining the scope, consider whether you need to support sending invoices and documents, receiving invoices and documents, or all. You should also determine whether your customers require B2B, B2G, or B2C invoicing, as consumer invoicing options vary by market and delivery channel.

In addition, consider which optional services your customers may need. Maventa offers services such as printing, scanning, receivables management, and supplier activation to support and enhance the invoicing flow.

### Integration level - how deeply you want to integrate

The development effort required for a Maventa integration can range from using a small set of API endpoints to building a fully automated, end-to-end solution. Higher integration levels provide richer functionality but require more development work. For example, you can choose whether users interact with the Maventa UI or whether all actions are handled entirely within your ERP system.

<!-- Level 1 – Low Effort -->
<section class="mx-auto max-w-5xl px-4 py-6">
  <header class="mb-4 text-center">
    <div class="text-2xl font-bold text-gray-900 dark:text-gray-100">
      Level 1 – Low Effort 
      <wa-icon name="rocket" class="ml-2 text-blue-600 dark:text-blue-400"></wa-icon>
    </div>
    <p class="text-sm text-gray-600 dark:text-gray-400">Basic value • Minimal automation</p>
  </header>

  <!-- Grid ensures each pillar = 1/3 width; items-end aligns bottoms -->
  <div class="h-auto md:h-72 grid grid-cols-1 md:grid-cols-3 gap-3 md:gap-6 items-end">
    <!-- API -->
    <div class="h-48 md:h-5/6 rounded-xl bg-emerald-600/95 dark:bg-emerald-700/95 text-emerald-50 shadow-md flex flex-col relative overflow-hidden">
      <div class="py-3 text-base font-bold uppercase text-center">API</div>
      <ul class="px-6 pb-3 text-sm space-y-1.5">
        <li>Sending invoices</li>
        <li>Receiving invoices</li>
      </ul>
      <wa-icon name="code" class="text-5xl absolute bottom-3 right-3 text-emerald-900/20 dark:text-emerald-950/30"></wa-icon>
    </div>

    <!-- Web UI -->
    <div class="h-48 md:h-5/6 rounded-xl bg-sky-600/95 dark:bg-sky-700/95 text-sky-50 shadow-md flex flex-col relative overflow-hidden">
      <div class="py-3 text-base font-bold uppercase text-center">Web UI</div>
      <ul class="px-6 pb-3 text-sm space-y-1.5">
        <li>Companies &amp; Settings</li>
        <li>Monitoring invoices</li>
      </ul>
      <wa-icon name="browser" class="text-5xl absolute bottom-3 right-3 text-sky-900/20 dark:text-sky-950/30"></wa-icon>
    </div>

    <!-- Email -->
    <div class="h-40 md:h-2/3 rounded-xl bg-amber-600/95 dark:bg-amber-700/95 text-amber-50 shadow-md flex flex-col relative overflow-hidden">
      <div class="py-3 text-base font-bold uppercase text-center">Email</div>
      <ul class="px-6 pb-3 text-sm space-y-1.5">
        <li>Handling errors</li>
      </ul>
      <wa-icon name="envelope" class="text-5xl absolute bottom-3 right-3 text-amber-900/20 dark:text-amber-950/30"></wa-icon>
    </div>
  </div>

  <p class="mt-4 text-sm font-medium text-gray-700 dark:text-gray-300 text-center bg-gray-100 dark:bg-gray-800 rounded-lg py-3 px-4">
    <wa-icon name="arrow-right" class="mr-2 text-blue-600 dark:text-blue-400"></wa-icon>
    Suitable for quick start. Mix of API + UI + Email.
  </p>
</section>

<!-- Level 2 – Medium Effort -->
<section class="mx-auto max-w-5xl px-4 py-6">
  <header class="mb-4 text-center">
    <div class="text-2xl font-bold text-gray-900 dark:text-gray-100">
      Level 2 – Medium Effort 
      <wa-icon name="balance-scale" class="ml-2 text-purple-600 dark:text-purple-400"></wa-icon>
    </div>
    <p class="text-sm text-gray-600 dark:text-gray-400">High value • More automation</p>
  </header>

  <div class="h-auto md:h-72 grid grid-cols-1 md:grid-cols-3 gap-3 md:gap-6 items-end">
    <!-- API -->
    <div class="h-40 md:h-2/3 rounded-xl bg-emerald-600/95 dark:bg-emerald-700/95 text-emerald-50 shadow-md flex flex-col relative overflow-hidden">
      <div class="py-3 text-base font-bold uppercase text-center">API</div>
      <ul class="px-6 pb-3 text-sm space-y-1.5">
        <li>Sending invoices</li>
        <li>Receiving invoices</li>
      </ul>
      <wa-icon name="code" class="text-5xl absolute bottom-3 right-3 text-emerald-900/20 dark:text-emerald-950/30"></wa-icon>
    </div>

    <!-- Web UI (taller) -->
    <div class="h-52 md:h-full rounded-xl bg-sky-600/95 dark:bg-sky-700/95 text-sky-50 shadow-md flex flex-col relative overflow-hidden">
      <div class="py-3 text-base font-bold uppercase text-center">Web UI</div>
      <ul class="px-6 pb-3 text-sm space-y-1.5">
        <li>Companies &amp; Settings</li>
        <li>Monitoring invoices</li>
        <li>Handling errors</li>
      </ul>
      <wa-icon name="browser" class="text-5xl absolute bottom-3 right-3 text-sky-900/20 dark:text-sky-950/30"></wa-icon>
    </div>

    <!-- Email (empty, faded) -->
    <div class="h-32 md:h-1/4 rounded-xl bg-amber-600/70 dark:bg-amber-700/70 text-amber-50 shadow-md flex flex-col relative overflow-hidden">
      <div class="py-3 text-base font-bold uppercase text-center opacity-60">Email</div>
      <ul class="px-6 pb-12 text-sm space-y-1.5 opacity-60">
      </ul>
      <wa-icon name="envelope" class="text-4xl absolute bottom-2 right-2 text-amber-900/15 dark:text-amber-950/20 opacity-60"></wa-icon>
    </div>
  </div>

  <p class="mt-4 text-sm font-medium text-gray-700 dark:text-gray-300 text-center bg-gray-100 dark:bg-gray-800 rounded-lg py-3 px-4">
    <wa-icon name="arrow-right" class="mr-2 text-blue-600 dark:text-blue-400"></wa-icon>
    More automation than Level 1, but still partly dependent on Web UI.
  </p>
</section>

<!-- Level 3 – High Effort -->
<section class="mx-auto max-w-5xl px-4 py-6">
  <header class="mb-4 text-center">
    <div class="text-2xl font-bold text-gray-900 dark:text-gray-100">
      Level 3 – High Effort 
      <wa-icon name="gem" class="ml-2 text-indigo-600 dark:text-indigo-400"></wa-icon>
    </div>
    <p class="text-sm text-gray-600 dark:text-gray-400">Maximum value • Full automation</p>
  </header>

  <div class="h-auto md:h-72 grid grid-cols-1 md:grid-cols-3 gap-3 md:gap-6 items-end">
    <!-- API (tallest) -->
    <div class="h-56 md:h-full rounded-xl bg-emerald-600/95 dark:bg-emerald-700/95 text-emerald-50 shadow-md flex flex-col relative overflow-hidden">
      <div class="py-3 text-base font-bold uppercase text-center">API</div>
      <ul class="px-6 pb-3 text-sm space-y-1.5">
        <li>Sending invoices</li>
        <li>Receiving invoices</li>
        <li>Handling errors</li>
        <li>Companies &amp; Settings</li>
        <li>Monitoring invoices</li>
      </ul>
      <wa-icon name="code" class="text-5xl absolute bottom-3 right-3 text-emerald-900/20 dark:text-emerald-950/30"></wa-icon>
    </div>

    <!-- Web UI (short, empty, faded) -->
    <div class="h-32 md:h-1/3 rounded-xl bg-sky-600/70 dark:bg-sky-700/70 text-sky-50 shadow-md flex flex-col relative overflow-hidden">
      <div class="py-3 text-base font-bold uppercase text-center opacity-60">Web UI</div>
      <ul class="px-6 pb-12 text-sm space-y-1.5 opacity-60">
      </ul>
      <wa-icon name="browser" class="text-4xl absolute bottom-2 right-2 text-sky-900/15 dark:text-sky-950/20 opacity-60"></wa-icon>
    </div>

    <!-- Email (short, empty, faded) -->
    <div class="h-32 md:h-1/3 rounded-xl bg-amber-600/70 dark:bg-amber-700/70 text-amber-50 shadow-md flex flex-col relative overflow-hidden">
      <div class="py-3 text-base font-bold uppercase text-center opacity-60">Email</div>
      <ul class="px-6 pb-12 text-sm space-y-1.5 opacity-60">
      </ul>
      <wa-icon name="envelope" class="text-4xl absolute bottom-2 right-2 text-amber-900/15 dark:text-amber-950/20 opacity-60"></wa-icon>
    </div>
  </div>

  <p class="mt-4 text-sm font-medium text-gray-700 dark:text-gray-300 text-center bg-gray-100 dark:bg-gray-800 rounded-lg py-3 px-4">
    <wa-icon name="arrow-right" class="mr-2 text-blue-600 dark:text-blue-400"></wa-icon>
    Full automation. Everything handled via API. No UI or Email.
  </p>
</section>


The appropriate integration level depends on your automation needs. It is also possible to start with a simpler integration and extend it over time.

## Integration process overview - from setup to production

Integrating with Maventa typically involves setting up the connection, validating it in the testing environment, and enabling it in production. Before accessing the production environment, all integrators must complete and sign the Maventa Integration Agreement, which defines key aspects such as billing and support. This agreement is provided by your integration contact.

Instructions for obtaining API keys for testing and production are described below.

> [!NOTE]
> **Contact us before you start building**
>
> Before you start building the integration, we recommend reaching out to our [sales team](https://maventa.com/contact#sales). They will introduce you to the service, assess your business needs, and connect you with our integration care team. Our integration care team will then provide all the necessary technical support to help you build and refine your integration. Depending on your needs, we may also arrange an integration kick-off meeting or additional training to ensure a successful implementation.

### Integration setup

#### Get access to the testing environment

To use Maventa APIs, you need access to API keys, which requires a partner company account in our [testing environment](https://testing.maventa.com/registrations?lang=en). To obtain a partner company account, contact our integration care team at <integrations@maventa.com>.  

Once you become a partner, you will receive credentials for our testing environment:

> [!IMPORTANT]
> **`client_id`** – Identifies the company (in this case your partner company account) (Company UUID).

> [!IMPORTANT]
> **`client_secret`** – Identifies the user of that company (User API key).

> [!IMPORTANT]
> **`vendor_api_key`** – Identifies your software (Vendor API key).

The Vendor API key is available in Maventa UI under Settings > Company settings > Software API keys. The User API key and Company UUID can be found in the *Settings* section.

Once you have these credentials, you can start making API calls to Maventa and building the integration.

<details>
<summary>**Question:** What is a vendor?</summary>

In Maventa, a **vendor** refers to the software that is integrated with the service. A **partner account** can have one or more vendors, each represented by a **software API key** (vendor API key). This key is used to authenticate the software when connecting to Maventa via the API.

- The **vendor API key** uniquely identifies the software connecting to Maventa.  
- A single partner account can manage multiple vendor API keys — for example, to support different software products or operations in different countries.  
- All vendor API keys are managed under the same partner account, which is the entity that owns and oversees these integrations.
</details>

#### Get access to the production environment

Before moving to the production environment, the integration must be thoroughly tested in the Maventa testing environment. This includes verifying that the core integration flows work as expected: invoices are routed to the correct destinations with accurate data, sending via the Peppol network functions correctly for applicable countries, consumer invoicing is properly configured when in use, received invoices are downloaded in the correct format, webhooks are delivered and processed successfully, and polling intervals are set to reasonable values and so on.

In addition, all integrators are required to complete and sign the Maventa Integration Agreement, which defines key topics such as billing, responsibilities, and support. The agreement will be provided by your integration contact person, either from sales or integration care.

Production API keys can be obtained by following the same process as in the testing environment.

> [!NOTE]
> Note that the testing and production endpoints of the API use different API keys. API keys from testing will not 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.

## Testing environment

The Maventa testing environment allows you to simulate most invoice sending and document exchange processes before moving to production. However, the behavior depends on the route:

### Real Sends

- Internal sends between Maventa customers function the same as in production.
- Peppol sends are processed as real transactions within the Peppol test network.

### Simulated Sends

- External operator routes in Finland and Sweden
- Consumer routes
- Email and print deliveries

Simulated sends are not actually delivered, they are marked as SENT in Maventa to mimic real processing.

> [!NOTE]
> Important Notes
>
> - All notification emails related to account management and error handling are sent to the actual recipients. Only use email addresses you have access to, avoid using addresses like `test@test.com` or your customers’ real addresses.
> - If you need to test sending invoices via email to a real recipient, please contact [support.maventa@visma.com](mailto:support.maventa@visma.com) to enable this for your account.
> - The testing environment is also used for internal testing, so it may differ from production. It can be temporarily unavailable, and the database may be cleared without notice. For privacy reasons, do not use real production data in the testing environment.

## Maventa user portal (UI)

The Maventa UI is a web-based user portal designed to complement API integrations by offering a visual interface for managing e-invoicing operations and supporting technical integration work. While most functionality available in the UI is also accessible through the API, the UI provides a convenient and user-friendly way to view, manage, and troubleshoot integration-related tasks.

Through the Maventa UI, users can:

- Configure settings  
- Access invoice and delivery logs  
- Handle manual actions such as rerouting invoices in an error state  
- Retrieve and manage API credentials including company UUID, user API key, and vendor API key  

Logging in to the Maventa UI requires an email-based user account.
