Visma Quotes API

A proposed price for products or services before an order. Overview of Quotes Functionality: [Quotes](https://support.spiris.se/bokforing-fakturering-plus/en-se/content/online-help/sales-quotes.htm) ___ Requires any of the following modules: * sales_standard Available in any of the following variants: * Pro * Standard * Invoicing

Operations 11

GET /quotes Get quotes #
POST /quotes Create a quote #
GET /quotes/{id} Get a specific quote based on id #
PUT /quotes/{id} Update a quote #
DELETE /quotes/{id} Delete a quote #
PUT /quotes/{id}/accept Accepts an ongoing quote #
POST /quotes/{id}/converttoorder Convert a quote to an order #
POST /quotes/{id}/previeworder Preview the result of converting a quote to an order #
POST /quotes/{id}/converttocustomerinvoice Convert a quote to a customer invoice #
GET /quotes/{id}/print Print a quote as pdf #
POST /quotes/{id}/email Send a quote as email #

Documentation

Specifications

Other Resources

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/visma-quotes-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

visma-quotes-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Bookkeeping & Invoicing/eAccounting API V2 Quotes API
  description: 'Visit our complete Bookkeeping & Invoicing/eAccounting API docs for how to get started, information about authentication, error handling, query customization and more.


    ✉ API Support'
  version: v2
servers:
- url: https://eaccountingapi.vismaonline.com/v2/
tags:
- name: Quotes
  description: 'A proposed price for products or services before an order.

    Overview of Quotes Functionality: Quotes


    ___


    Requires any of the following modules:

    * sales_standard


    Available in any of the following variants:

    * Pro

    * Standard

    * Invoicing'
paths:
  /quotes:
    get:
      tags:
      - Quotes
      summary: Get quotes
      description: 'Get all quotes, or add query parameters to filter the results. The response will include a list of quotes with their details, such as customer information, rows, totals, and status.


        ___

        Requires any of the following scopes:

        * ea:sales

        * ea:sales_readonly'
      responses:
        '200':
          description: Request successful
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedResponseOfQuoteApi'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CommonExtendedBadRequest'
      operationId: getQuotes
      x-operation-id-source: derived
    post:
      tags:
      - Quotes
      summary: Create a quote
      description: 'Create a new quote.


        ___

        Requires any of the following scopes:

        * ea:sales'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/QuoteApi'
      responses:
        '201':
          description: Quote created successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/QuoteApi'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CommonExtendedBadRequest'
      operationId: postQuotes
      x-operation-id-source: derived
  /quotes/{id}:
    get:
      tags:
      - Quotes
      summary: Get a specific quote based on id
      description: 'Get a specific quote by its unique identifier. The response will include the quote details, such as customer information, rows, totals, and status.


        ___

        Requires any of the following scopes:

        * ea:sales

        * ea:sales_readonly'
      parameters:
      - name: id
        in: path
        description: This represents the id of the quote you want to get
        required: true
        schema:
          type: string
          format: uuid
      responses:
        '200':
          description: Request successful
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/QuoteApi'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CommonExtendedBadRequest'
      operationId: getQuotesById
      x-operation-id-source: derived
    put:
      tags:
      - Quotes
      summary: Update a quote
      description: 'Replace an existing quote''s data with the provided data.


        ___

        Requires any of the following scopes:

        * ea:sales'
      parameters:
      - name: id
        in: path
        description: This represents the Id of the quote.
        required: true
        schema:
          type: string
          format: uuid
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/QuoteApi'
      responses:
        '200':
          description: Quote updated successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/QuoteApi'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CommonExtendedBadRequest'
      operationId: putQuotesById
      x-operation-id-source: derived
    delete:
      tags:
      - Quotes
      summary: Delete a quote
      description: 'Delete a quote.


        ___

        Requires any of the following scopes:

        * ea:sales'
      parameters:
      - name: id
        in: path
        description: This represents the Id of the quote.
        required: true
        schema:
          type: string
          format: uuid
      responses:
        '200':
          description: Quote deleted successfully
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CommonExtendedBadRequest'
      operationId: deleteQuotesById
      x-operation-id-source: derived
  /quotes/{id}/accept:
    put:
      tags:
      - Quotes
      summary: Accepts an ongoing quote
      description: 'Set the status of an ongoing quote to accepted.


        ___

        Requires any of the following scopes:

        * ea:sales'
      parameters:
      - name: id
        in: path
        description: This represents the Id of the quote.
        required: true
        schema:
          type: string
          format: uuid
      responses:
        '200':
          description: Quote accepted successfully
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CommonExtendedBadRequest'
      operationId: putQuotesByIdAccept
      x-operation-id-source: derived
  /quotes/{id}/converttoorder:
    post:
      tags:
      - Quotes
      summary: Convert a quote to an order
      description: 'Convert a quote to an order.


        ___

        Requires any of the following scopes:

        * ea:sales'
      parameters:
      - name: id
        in: path
        description: This represents the Id of the quote.
        required: true
        schema:
          type: string
          format: uuid
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/QuoteConversionApi'
      responses:
        '200':
          description: Quote converted successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OrderApi'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CommonExtendedBadRequest'
      operationId: postQuotesByIdConverttoorder
      x-operation-id-source: derived
  /quotes/{id}/previeworder:
    post:
      tags:
      - Quotes
      summary: Preview the result of converting a quote to an order
      description: 'Preview the result of converting a quote to an order.


        ___

        Requires any of the following scopes:

        * ea:sales'
      parameters:
      - name: id
        in: path
        description: This represents the Id of the quote.
        required: true
        schema:
          type: string
          format: uuid
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/QuoteConversionApi'
      responses:
        '200':
          description: Request successful
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OrderApi'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CommonExtendedBadRequest'
      operationId: postQuotesByIdPrevieworder
      x-operation-id-source: derived
  /quotes/{id}/converttocustomerinvoice:
    post:
      tags:
      - Quotes
      summary: Convert a quote to a customer invoice
      description: 'Convert a quote to an invoice.


        ___

        Requires any of the following scopes:

        * ea:sales'
      parameters:
      - name: id
        in: path
        description: This represents the Id of the quote.
        required: true
        schema:
          type: string
          format: uuid
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/QuoteConversionApi'
      responses:
        '200':
          description: Quote converted successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CustomerInvoiceApi'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CommonExtendedBadRequest'
      operationId: postQuotesByIdConverttocustomerinvoice
      x-operation-id-source: derived
  /quotes/{id}/print:
    get:
      tags:
      - Quotes
      summary: Print a quote as pdf
      description: 'Print a quote as PDF.


        ___

        Requires any of the following scopes:

        * ea:sales

        * ea:sales_readonly'
      parameters:
      - name: id
        in: path
        description: This represents the Id of the quote.
        required: true
        schema:
          type: string
          format: uuid
      responses:
        '200':
          description: Request successful
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CustomerInvoiceApi'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CommonExtendedBadRequest'
      operationId: getQuotesByIdPrint
      x-operation-id-source: derived
  /quotes/{id}/email:
    post:
      tags:
      - Quotes
      summary: Send a quote as email
      description: 'Send a quote as email.


        ___

        Requires any of the following scopes:

        * ea:sales

        * ea:sales_readonly'
      parameters:
      - name: id
        in: path
        description: This represents the Id of the quote.
        required: true
        schema:
          type: string
          format: uuid
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/EmailApi'
      responses:
        '200':
          description: Request successful
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CommonExtendedBadRequest'
      operationId: postQuotesByIdEmail
      x-operation-id-source: derived
components:
  schemas:
    EmailApi:
      type: object
      properties:
        Email:
          maxLength: 255
          minLength: 0
          type:
          - string
          - 'null'
          description: Default value is the customer's email address
        CcRecipients:
          type:
          - array
          - 'null'
          items:
            type: string
          description: Default value is the customer's cc email addresses (if omitted or empty list). Set to null to skip using any CC addresses.
        Subject:
          type:
          - string
          - 'null'
          description: 'The default email subject found in the system followed by the company''s name.The special pattern #### in the subject text will be replaced by the sales document number (quote, order or invoice).This allows you to create a subject that contains the sales document number without querying for the document first'
        Message:
          type:
          - string
          - 'null'
          description: Default value is the the domestic or foreign company text from /v2/companysettings
      additionalProperties: false
    QuoteRowApi:
      type: object
      properties:
        Id:
          type: string
          description: Unique Id provided by the system for every row
          format: uuid
          readOnly: true
        ArticleId:
          type:
          - string
          - 'null'
          description: 'Source: Get from /v2/articles'
          format: uuid
        IsServiceArticle:
          type: boolean
          description: True if the sales category of the article on the row is goods, false otherwise
          readOnly: true
        UnitId:
          type:
          - string
          - 'null'
          description: 'Source: Get from /v2/units/{id}'
          format: uuid
          readOnly: true
        Text:
          maxLength: 2000
          minLength: 0
          type:
          - string
          - 'null'
          description: For non text rows, default value will be the article's name; for text rows, there should be at least one character in place
        UnitPrice:
          type: number
          description: 'Format: 2 decimals allowed if the customer and currency are domestic or 4 decimals if customer or currency is foreign'
          format: double
        Amount:
          type: number
          description: 'Total amount of row. Format: 2 decimals'
          format: double
        IsDiscountInFixedAmount:
          type: boolean
          description: True if the discount on the row is a fixed amount, false otherwise
          readOnly: true
        DiscountFixedAmount:
          type:
          - number
          - 'null'
          description: 'Fixed amount discount on the row. Only applicable if IsDiscountInFixedAmount is true. Format: 2 decimals'
          format: double
          readOnly: true
        DiscountPercentage:
          maximum: 1
          minimum: 0
          type: number
          description: 'Percentage discount n the row. Format: 4 decimals'
          format: double
        Quantity:
          type: number
          description: 'Format: 4 decimals'
          format: double
        WorkCostType:
          type: integer
          description: <strong>Possible values:</strong><br/>None = 0,<br/>RotConstructionWork = 1,<br/>RotElectricalWork = 2,<br/>RotGlassSheetMetalWork = 3,<br/>RotGroundWork = 4,<br/>RotBrickWork = 5,<br/>RotPaintDecorateWork = 6,<br/>RotPlumbWork = 7,<br/>RutCleanJobWork = 9,<br/>RutCareClothTextile = 10,<br/>RutSnowRemove = 12,<br/>RutGarden = 13,<br/>RutBabySitting = 14,<br/>RutOtherCare = 15,<br/>RutRemovalServices = 18,<br/>RutITServices = 19,<br/>RotHeatPump = 20,<br/>RotHeatPump2 = 21,<br/>RutHomeAppliances = 22,<br/>RotSolarHeatingSystem = 23,<br/>RotWoodBoiler = 24,<br/>RotFuelBoiler = 25,<br/>RutLaundry = 26,<br/>RutFurnishing = 27,<br/>RutGoodsTransport = 28,<br/>RutHomeSupervision = 29<br/><br/>Only used for Rot/Rut.
          format: int32
        IsWorkCost:
          type: boolean
          description: Only used for Rot/Rut
          readOnly: true
        WorkHours:
          type:
          - number
          - 'null'
          description: Only used for Rot/Rut
          format: double
        MaterialCosts:
          type:
          - number
          - 'null'
          description: Only used for Rot/Rut
          format: double
        IsVatFree:
          type: boolean
          description: True if the row has been marked VAT free
        VatRate:
          type:
          - number
          - 'null'
          description: When row is a text row the value is null. Default value is also null
          format: double
          readOnly: true
        LineNumber:
          type: integer
          description: Unique line number for this row
          format: int32
          readOnly: true
        CostCenterItemId1:
          type:
          - string
          - 'null'
          description: 'Source: Get from /v2/costcenters'
          format: uuid
        CostCenterItemId2:
          type:
          - string
          - 'null'
          description: 'Source: Get from /v2/costcenters'
          format: uuid
        CostCenterItemId3:
          type:
          - string
          - 'null'
          description: 'Source: Get from /v2/costcenters'
          format: uuid
        ProjectId:
          type:
          - string
          - 'null'
          description: Get from /v2/projects
          format: uuid
        IsTextRow:
          type: boolean
          description: True if this is a text row. False otherwise
          readOnly: true
        ArticleNumber:
          type:
          - string
          - 'null'
          description: Article number on the row
          readOnly: true
        GreenTechnologyType:
          maximum: 3
          minimum: 0
          type: integer
          description: <strong>Possible values:</strong><br/>None = 0,<br/>SolarCellInstallation = 1,<br/>ElectricEnergyStorageInstallation = 2,<br/>ElectricVehicleChargingPointInstallation = 3<br/><br/>Type of green technology for the row.
          format: int32
        ContributionMargin:
          $ref: '#/components/schemas/ContributionMarginApi'
        PurchasePrice:
          type: number
          description: Purchase price for the article on this row, valid only if it is an article row
          format: double
          readOnly: true
        FreightCosts:
          type: number
          description: Freight costs for the article on this row, valid only if it is an article row
          format: double
          readOnly: true
      additionalProperties: false
    QuoteRowConversionApi:
      type: object
      properties:
        Id:
          type: string
          description: Id of the quote row
          format: uuid
        WorkHours:
          type: number
          description: Number of worked hours for Rot/Rut and green technonlogy
          format: double
      additionalProperties: false
    OrderApi:
      required:
      - CurrencyCode
      - CustomerId
      - EuThirdParty
      - OrderDate
      - ReverseChargeOnConstructionServices
      - RotReducedInvoicingType
      - Status
      type: object
      properties:
        Id:
          type: string
          description: Unique Id provided by the system
          format: uuid
          readOnly: true
        Amount:
          type: number
          description: 'Format: 2 decimals'
          format: double
        CustomerId:
          type: string
          description: Id of the customer for this order
          format: uuid
        CurrencyCode:
          maxLength: 3
          minLength: 0
          type: string
        CreatedUtc:
          type: string
          format: date-time
          readOnly: true
        VatAmount:
          type: number
          format: double
        RoundingsAmount:
          type: number
          format: double
        DeliveredAmount:
          type: number
          description: 'Format: 2 decimals'
          format: double
        DeliveredVatAmount:
          type: number
          description: 'Format: 2 decimals'
          format: double
        DeliveredRoundingsAmount:
          type: number
          description: 'Format: 2 decimals'
          format: double
        DeliveryCustomerName:
          maxLength: 100
          minLength: 0
          type:
          - string
          - 'null'
          description: Takes the value from the selected customer
        DeliveryAddress1:
          maxLength: 50
          minLength: 0
          type:
          - string
          - 'null'
          description: Takes the value from the selected customer
        DeliveryAddress2:
          maxLength: 50
          minLength: 0
          type:
          - string
          - 'null'
          description: Takes the value from the selected customer
        DeliveryPostalCode:
          maxLength: 10
          minLength: 0
          type:
          - string
          - 'null'
          description: Takes the value from the selected customer
        DeliveryCity:
          maxLength: 50
          minLength: 0
          type:
          - string
          - 'null'
          description: Takes the value from the selected customer
        DeliveryCountryCode:
          maxLength: 2
          minLength: 0
          type:
          - string
          - 'null'
          description: Takes the value from the selected customer
        YourReference:
          maxLength: 100
          minLength: 0
          type:
          - string
          - 'null'
          description: Equivalent for property YourReference in CustomerInvoiceApi models
        OurReference:
          maxLength: 100
          minLength: 0
          type:
          - string
          - 'null'
          description: Equivalent for property OurReference in CustomerInvoiceApi models
        BuyersOrderReference:
          maxLength: 35
          minLength: 0
          type:
          - string
          - 'null'
          description: Reference for the customer of the order
        InvoiceAddress1:
          maxLength: 50
          minLength: 0
          type:
          - string
          - 'null'
          description: If the value is null it will be filled with the value from the customer
        InvoiceAddress2:
          maxLength: 50
          minLength: 0
          type:
          - string
          - 'null'
          description: If the value is null it will be filled with the value from the customer
        InvoiceCity:
          type:
          - string
          - 'null'
          description: Default value is the value from the selected customer
        InvoiceCountryCode:
          maxLength: 2
          minLength: 0
          type:
          - string
          - 'null'
          description: Default value is the value from the selected customer
        InvoiceCustomerName:
          maxLength: 50
          minLength: 0
          type:
          - string
          - 'null'
        CustomerNumber:
          type:
          - string
          - 'null'
          readOnly: true
        CustomerName:
          type:
          - string
          - 'null'
          description: The selected customer's name
          readOnly: true
        InvoicePostalCode:
          maxLength: 10
          minLength: 0
          type:
          - string
          - 'null'
          description: Default value is the value from the selected customer
        DeliveryMethodName:
          maxLength: 50
          minLength: 0
          type:
          - string
          - 'null'
        DeliveryMethodCode:
          maxLength: 20
          minLength: 0
          type:
          - string
          - 'null'
        DeliveryTermName:
          maxLength: 50
          minLength: 0
          type:
          - string
          - 'null'
        DeliveryTermId:
          type:
          - string
          - 'null'
          format: uuid
          readOnly: true
        DeliveryMethodId:
          type:
          - string
          - 'null'
          format: uuid
          readOnly: true
        DeliveryTermCode:
          maxLength: 20
          minLength: 0
          type:
          - string
          - 'null'
        TermsOfPaymentId:
          type:
          - string
          - 'null'
          format: uuid
        EuThirdParty:
          type: boolean
          description: Indicates whether the transaction is an EU triangulation sale (resale of goods through an intermediary within the EU)
        CustomerIsPrivatePerson:
          type: boolean
          description: True if the customer of this order is a private individual, false otherwise
          readOnly: true
        IncludesVat:
          type: boolean
          description: True if company settings checkbox "ShowPricesExclVatPC" is checked and customer type is "Private", otherwise false
          readOnly: true
        OrderDate:
          type: string
          description: Expected date format YYYY-MM-DD
          format: date-time
        Status:
          maximum: 4
          minimum: 1
          type: integer
          description: <strong>Possible values:</strong><br/>Draft = 1,<br/>Ongoing = 2,<br/>Shipped = 3,<br/>Invoiced = 4<br/><br/>Status of the order.
          format: int32
        Number:
          type:
          - integer
          - 'null'
          format: int32
          readOnly: true
        ModifiedUtc:
          type:
          - string
          - 'null'
          description: Date and time of the last document modification
          format: date-time
          readOnly: true
        DeliveryDate:
          type:
          - string
          - 'null'
          description: Expected date format YYYY-MM-DD. Default value is null
          format: date-time
        HouseWorkAmount:
          type: number
          description: Amount of Rot/Rut deduction on the order
          format: double
        HouseWorkAutomaticDistribution:
          type: boolean
          description: True if the order uses automatic distribution of tax deduction. False otherwise
        HouseWorkCorporateIdentityNumber:
          maxLength: 20
          minLength: 0
          type:
          - string
          - 'null'
          description: Corporate identity number used for deduction
        HouseWorkPropertyName:
          maxLength: 100
          minLength: 0
          type:
          - string
          - 'null'
          description: Name of the property used for deduction if applicable
        SalesDocumentAttachments:
          type:
          - array
          - 'null'
          items:
            type: string
            format: uuid
          description: Fetch SalesDocumentAttachments via GET /v2/salesdocumentattachments/{attachmentId}
          readOnly: true
        MessageThreads:
          type:
          - array
          - 'null'
          items:
            type: string
            format: uuid
          description: Fetch messages via GET /v2/messagethreads/{messageThreadId}
          readOnly: true
        Notes:
          type:
          - array
          - 'null'
          items:
            type: string
            format: uuid
          description: Fetch notes via GET /v2/notes/{notesId}
          readOnly: true
        Rows:
          type:
          - array
          - 'null'
          items:
            $ref: '#/components/schemas/OrderRowApi'
        ShippedDateTime:
          type:
          - string
          - 'null'
          description: Expected date format YYYY-MM-DD. Default value is null
          format: date-time
        RotReducedInvoicingType:
          type: integer
          description: <strong>Possible values:</strong><br/>0 = Normal,<br/>1 = Rot,<br/>2 = Rut
          format: int32
        MaxAllowedTaxReductionAmount:
          type: number
          description: 'Default: maximum allowed tax reduction amount'
          format: double
          readOnly: true
        RotReducedInvoicingPercent:
          type: number
          description: 'Format: 4 decimals'
          format: double
          readOnly: true
        RotPropertyType:
          type:
          - integer
          - 'null'
          description: <strong>Possible values:</strong><br/>1 = Apartment,<br/>2 = Property<br/><br/>Leave blank or set to null if you do not intend to use ROT or Green Technology functionality.
          format: int32
        Persons:
          type:
          - array
          - 'null'
          items:
            $ref: '#/components/schemas/SalesDocumentRotRutReductionPersonApi'
        ReverseChargeOnConstructionServices:
          type: boolean
          description: <strong>Possible values:</strong><br/>True = this order contains reverse charge on construction services<br/>False = otherwise
        UsesGreenTechnology:
          type: boolean
          description: <strong>Possible values:</strong><br/>True = This order uses green technology<br/>False = Otherwise
        IsNotDelivered:
          type: boolean
          readOnly: true
        ContributionMargin:
          $ref: '#/components/schemas/ContributionMarginApi'
        CreatedFromQuoteId:
          type:
          - string
          - 'null'
          description: Id of the quote this order was created from. Is null if order wasn't created by converting a quote
          format: uuid
          readOnly: true
        BackgroundId:
          type:
          - string
          - 'null'
          description: Represents the identifier for the background image or template used on the PDF printout
          format: uuid
          readOnly: true
      additionalProperties: false
    TermsOfPaymentApi:
      type: object
      properties:
        Id:
          type: string
          description: Unique Id provided by the system. For v2/quotes and v2/quotedrafts endpoints Id is editable
          format: uuid
          readOnly: true
        Name:
          type:
          - string
          - 'null'
          description: Name of the terms of payment
        NameEnglish:
          type:
          - string
          - 'null'
          description: English name of the terms of payment
        NumberOfDays:
          type: integer
          description: Number of days to pay
          format: int32
        TermsOfPaymentTypeId:
          type: integer
          description: <strong>Possible values:</strong><br/>0 = Normal,<br/>1 = CurrentMonth,<br/>2 = Cash,<br/>3 = CardPayment,<br/>4 = DigitalWallet,<br/>5 = PaymentServiceProvider<br/><br/>Type of terms of payment, possible values are.
          format: int32
        TermsOfPaymentTypeText:
          type:
          - string
          - 'null'
        AvailableForSales:
          type: boolean
          description: True if this terms of payment can be used on sales documents, false otherwise
        AvailableForPurchase:
          type: boolean
          description: True if this terms of payment can be used on purchase documents, false otherwise
      additionalProperties: false
    CustomerInvoiceApi:
      required:
      - CustomerId
      - EuThirdParty
      - RotReducedInvoicingType
      - Rows
      type: object
      properties:
        Id:
          type: string
          description: Unique Id provided by the system
          format: uuid
          readOnly: true
        EuThirdParty:
          type: boolean
          description: Default is false. True only if EU intermediary, VAT triangulation rules apply. Only if EU company is invoicing to a company from a different EU country, may set to True if desired.
        IsCreditInvoice:
          type: boolean
        CurrencyCode:
          type:
          - string
          - 'null'
          readOnly: true
        CurrencyRate:
          type:
          - number
          - 'null'
          description: 'Default: Automatic calculation of the currency rate. Enter this value to provide a custom rate'
          format: double
        CreatedByUserId:
          type:
          - string
          - 'null'
          format: uuid
          readOnly: true
        TotalAmount:
          type: number
          description: Total amount on this invoice expressed in base currency
          format: double
          readOnly: true
        TotalVatAmount:
          type: number
          description: Total VAT amount on this invoice expressed in base currency
          format: double
          readOnly: true
        TotalRoundings:
          type: number
          description: Total roundings amount on this invoice expressed in base currency
          format: double
          readOnly: true
        TotalAmountInvoiceCurrency:
          type: number
          description: Total amount on this invoice expressed in the invoice currecy
          format: double
          readOnly: true
        TotalVatAmountInvoiceCurrency:
          type: number
          description: Total VAT amount on this invoice expressed in the invoice currency
          format: double
          readOnly: true
        SetOffAmountInvoiceCurrency:
          type: number
          description: Total credited amount on this invoice expressed in the invoice currency
          format: double
          readOnly: true
        CustomerId:
          type: string
          format: uuid
        Rows:
          type: array
          items:
            $ref: '#/components/schemas/CustomerInvoiceRowApi'
        VatSpecification:
          type:
          - array
          - 'null'
          items:
            $ref: '#/components/schemas/CustomerInvoiceVatApi'
          description: Contains a summary of amounts for each VAT rate
          readOnly: true
        InvoiceDate:
          typ

# --- truncated at 32 KB (73 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/visma/refs/heads/main/openapi/visma-quotes-api-openapi.yml