> For the complete documentation index, see [llms.txt](https://docs.younium.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.younium.com/e-signing-integrations/visma-addo.md).

# Visma Addo

## Overview

The Visma Addo integration (Addo Sign REST API v2) provides digital signing for quotes and related documents in Younium CPQ. It follows Younium's shared e-signing flow: templates and recipients are sent to Addo, signing tokens are stored on envelopes, status is polled and mapped to Younium e-signing states, and optional automatic quote-to-order conversion can run when signing completes.

## Authentication

Visma Addo is connected per user rather than per legal entity: each person who sends documents for signing connects their own Visma Addo account.

You enter your Visma Addo email address and password, and choose whether to connect to the demo service or the live one. Younium signs in to confirm they work; a rejected sign-in reports an invalid email or password. Your password is not stored as you typed it.

Younium signs in again as needed while the integration is active, so the connection stays usable without you re-entering anything.

### Sandbox vs. Production

The demo and live Visma Addo services are separate, with separate accounts. Which one you connect to is chosen when you connect, and moving from the demo service to the live one means connecting again with live credentials.

## Save and Setup

| Setting                                            | Description                                                   |
| -------------------------------------------------- | ------------------------------------------------------------- |
| **Convert quote to order** (`ConvertQuoteToOrder`) | When on, completing signing can convert the quote to an order |

`SaveAndSetup` updates `ConvertQuoteToOrder` for the current user’s settings row.

## Deactivation

Disconnecting removes your Visma Addo connection from Younium. Documents already sent for signing continue in Visma Addo and are not withdrawn.

## Initiate signing workflow

`CreateModel` (override):

| Younium `ESigningData`                   | Addo payload                       |
| ---------------------------------------- | ---------------------------------- |
| `Recipients[].Email`, `Name`             | `AddoRecipient`                    |
| `Documents[].DocumentAsByte`, `FileName` | `AddoDocument`                     |
| `SigningTemplate.Id`                     | `InitiateSigningModel` template ID |
| `SigningTemplate.ValidToDate`            | `AddoTemplateOverride`             |
| Session token                            | `AddoRequestModel` token wrapper   |

POST `InitiateSigning` → response `SigningToken` returned to Younium as `ESigningResponse.SigningToken`.

Before an envelope is sent, Younium requires all documents to come from a single entity type, at least one document, a template, and every recipient to have a name and an email address.

> **Note on duplicate sends:** Younium allows only one e-signing send to be in progress for a quote at a time. If a second send request for the same quote arrives while the first is still being processed — for example when a request is submitted twice in quick succession — Younium rejects it with "The quote is already being sent for e-signing" rather than creating a second envelope.

## Signing templates

GET `GetSigningTemplates?token={token}` → maps `SigningTemplateItems` to Younium `ESigningTemplate` (`Id`, `FriendlyName` → `Name`). Throws if no templates.

## Status mapping

`GetSigningStatus` calls `GetSigningStatus?signingToken=...`.

### Addo transaction state → Younium `ESigningTransactionState`

| Addo `AddoTransactionState`                   | Younium state   |
| --------------------------------------------- | --------------- |
| `Failed`                                      | `Failed`        |
| `Created`, `Pending`, `Started`               | `Pending`       |
| `Signed`, `ReadyForDistribution`, `Completed` | `Signed`        |
| `Expired`                                     | `Expired`       |
| `Cancelled`                                   | `Cancelled`     |
| `Rejected`                                    | `Rejected`      |
| `DataCollecting`                              | `UnKnownStatus` |

### Addo signing state → Younium envelope state

Mapped in `GetESigningState` from `AddoSigningState` (see service for quote lifecycle alignment).

Aggregates: `WaitingForSignature`, `Signed`, `Cancelled` counts from recipient transactions.

Activity logs: `GetTransactionDetails` per transaction; HTML stripped from `Message`; `SendOutDate` parsed from Unix milliseconds.

## Status updates from Visma Addo

Visma Addo notifies Younium automatically whenever a signing's status changes — for example when every recipient has signed, a recipient rejects, or the signing expires — so a quote's signing status updates without anyone needing to check manually.

That notification only tells Younium to check the signing's status; Younium never stores the status the notification itself carries. It asks Visma Addo for the signing's current status, using the connection of the person who sent the document for signing, and stores that instead. If Visma Addo confirms a different status than the notification carried, or does not return one Younium recognises, the signing's status in Younium is left unchanged and the attempt is recorded in the integration log.

> **Note on status notifications:** A notification only triggers a check with Visma Addo — it can never set a signing's status by itself. A signing can only be marked as completed, rejected or expired once Visma Addo's own record agrees.

## Signing details

GET `GetSigning?signingToken=...` returns documents (bytes, names) and recipients for display/download in Younium.

## Cancel signing

POST `CancelSigning` with token and signingToken. Fault code `430` treated as already cancelled (success). Other faults throw `ApiException` with reason.

## Field mapping — recipients (initiate)

| Younium Field             | Addo Field |
| ------------------------- | ---------- |
| `ESigningRecipient.Email` | `Email`    |
| `ESigningRecipient.Name`  | `Name`     |

## Field mapping — documents

| Younium Field                     | Addo Field      |
| --------------------------------- | --------------- |
| `ESigningDocument.DocumentAsByte` | Document binary |
| `ESigningDocument.FileName`       | File name       |

## Eligibility

* The person sending the document has their own Visma Addo connection, and it is active.
* That connection is still accepted by Visma Addo when the document is sent.
* CPQ envelope records, which follow the shared e-signing behaviour rather than anything specific to Addo.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.younium.com/e-signing-integrations/visma-addo.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
