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-orders-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: 3.2.0
info:
title: Bookkeeping & Invoicing/eAccounting API V2 Orders 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: Orders
description: 'A confirmed request for products or services to be delivered.
Overview of Orders Functionality: Orders
___
Requires any of the following modules:
* sales_standard
Available in any of the following variants:
* Pro
* Standard
* Invoicing'
paths:
/orders:
get:
tags:
- Orders
summary: Get orders
description: 'Get all orders, or add query parameters to filter the results. The response will include a list of orders 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/PaginatedResponseOfOrderApi'
'400':
description: Bad request
content:
application/json:
schema:
$ref: '#/components/schemas/CommonExtendedBadRequest'
operationId: getOrders
x-operation-id-source: derived
post:
tags:
- Orders
summary: Create an order
description: 'Create a new order.
___
Requires any of the following scopes:
* ea:sales'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/OrderApi'
responses:
'201':
description: Order created successfully
content:
application/json:
schema:
$ref: '#/components/schemas/OrderApi'
'400':
description: Bad request
content:
application/json:
schema:
$ref: '#/components/schemas/CommonExtendedBadRequest'
operationId: postOrders
x-operation-id-source: derived
/orders/{id}:
get:
tags:
- Orders
summary: Get a specific order based on Id
description: 'Get a specific order by its unique identifier. The response will include the order 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 order you want to get
required: true
schema:
type: string
format: uuid
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: getOrdersById
x-operation-id-source: derived
put:
tags:
- Orders
summary: Update an order
description: 'Replace an existing order''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 order you want to update
required: true
schema:
type: string
format: uuid
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/OrderApi'
responses:
'200':
description: Order updated successfully
content:
application/json:
schema:
$ref: '#/components/schemas/OrderApi'
'400':
description: Bad request
content:
application/json:
schema:
$ref: '#/components/schemas/CommonExtendedBadRequest'
operationId: putOrdersById
x-operation-id-source: derived
delete:
tags:
- Orders
summary: Delete an order
description: 'Delete an order. Orders that are shipped or invoiced cannot be deleted.
___
Requires any of the following scopes:
* ea:sales'
parameters:
- name: id
in: path
description: This represents the Id of the order you want to delete
required: true
schema:
type: string
format: uuid
responses:
'200':
description: Order deleted successfully
'400':
description: Bad request
content:
application/json:
schema:
$ref: '#/components/schemas/CommonExtendedBadRequest'
operationId: deleteOrdersById
x-operation-id-source: derived
/orders/{id}/converteddrafttoorder:
post:
tags:
- Orders
summary: Convert order draft to order
description: 'Convert an order draft to an order. Returns the converted order.
___
Requires any of the following scopes:
* ea:sales'
parameters:
- name: id
in: path
description: This represents the Id of the order draft you want to convert
required: true
schema:
type: string
format: uuid
responses:
'200':
description: Order converted successfully
content:
application/json:
schema:
$ref: '#/components/schemas/OrderApi'
'400':
description: Bad request
content:
application/json:
schema:
$ref: '#/components/schemas/CommonExtendedBadRequest'
operationId: postOrdersByIdConverteddrafttoorder
x-operation-id-source: derived
/orders/{id}/completed:
post:
tags:
- Orders
summary: Complete an order
description: 'Mark an ongoing order as completed.
___
Requires any of the following scopes:
* ea:sales'
parameters:
- name: id
in: path
description: This represents the Id of the order you want to complete
required: true
schema:
type: string
format: uuid
responses:
'200':
description: Order completed successfully
content:
application/json:
schema:
$ref: '#/components/schemas/OrderApi'
'400':
description: Bad request
content:
application/json:
schema:
$ref: '#/components/schemas/CommonExtendedBadRequest'
operationId: postOrdersByIdCompleted
x-operation-id-source: derived
/orders/{id}/voided:
post:
tags:
- Orders
summary: Void an order
description: 'Void a shipped order by reverting it to ongoing status.
___
Requires any of the following scopes:
* ea:sales'
parameters:
- name: id
in: path
description: This represents the Id of the order you want to void
required: true
schema:
type: string
format: uuid
responses:
'200':
description: Order voided successfully
content:
application/json:
schema:
$ref: '#/components/schemas/OrderApi'
'400':
description: Bad request
content:
application/json:
schema:
$ref: '#/components/schemas/CommonExtendedBadRequest'
operationId: postOrdersByIdVoided
x-operation-id-source: derived
/orders/{id}/backorder:
post:
tags:
- Orders
summary: Create a backorder
description: 'Create a backorder from an existing order for items that couldn''t be delivered.
___
Requires any of the following scopes:
* ea:sales'
parameters:
- name: id
in: path
description: This represents the Id of the order you want to create a backorder for
required: true
schema:
type: string
format: uuid
responses:
'200':
description: Backorder created successfully
content:
application/json:
schema:
$ref: '#/components/schemas/OrderApi'
'400':
description: Bad request
content:
application/json:
schema:
$ref: '#/components/schemas/CommonExtendedBadRequest'
operationId: postOrdersByIdBackorder
x-operation-id-source: derived
/orders/{id}/convert:
post:
tags:
- Orders
summary: Convert an order to an invoice
description: 'Convert an order to a customer invoice. Returns the invoice that was created.
___
Requires any of the following scopes:
* ea:sales'
parameters:
- name: id
in: path
description: This represents the Id of the order you want to convert
required: true
schema:
type: string
format: uuid
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/OrderConversionApi'
responses:
'200':
description: Order converted successfully
content:
application/json:
schema:
$ref: '#/components/schemas/CustomerInvoiceApi'
'400':
description: Bad request
content:
application/json:
schema:
$ref: '#/components/schemas/CommonExtendedBadRequest'
operationId: postOrdersByIdConvert
x-operation-id-source: derived
/orders/{id}/print:
get:
tags:
- Orders
summary: Print an order as pdf
description: 'Print an order 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 order you want to print
required: true
schema:
type: string
format: uuid
responses:
'200':
description: Request successful
'400':
description: Bad request
content:
application/json:
schema:
$ref: '#/components/schemas/CommonExtendedBadRequest'
operationId: getOrdersByIdPrint
x-operation-id-source: derived
/orders/{id}/deliverynote/print:
get:
tags:
- Orders
summary: Print a delivery note for an order as pdf
description: 'Print a delivery note for an order 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 order you want to print a delivery note for
required: true
schema:
type: string
format: uuid
responses:
'200':
description: Request successful
'400':
description: Bad request
content:
application/json:
schema:
$ref: '#/components/schemas/CommonExtendedBadRequest'
operationId: getOrdersByIdDeliverynotePrint
x-operation-id-source: derived
/orders/{id}/email:
post:
tags:
- Orders
summary: Send an order as email
description: 'Send an order 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 order you want to send
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: postOrdersByIdEmail
x-operation-id-source: derived
components:
schemas:
OrderConversionApi:
type: object
properties:
WorkHouseOtherCosts:
type:
- number
- 'null'
description: Only used for ROT/RUT work house other costs
format: double
additionalProperties: false
SalesDocumentRotRutReductionPersonApi:
type: object
properties:
Id:
type: string
description: Unique Id provided by the system
format: uuid
readOnly: true
Ssn:
maxLength: 50
minLength: 0
type:
- string
- 'null'
description: Social security number
Amount:
type: number
format: double
additionalProperties: false
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
CreditedByApi:
type: object
properties:
CreditInvoiceId:
type: string
description: The Id of the customer invoice
format: uuid
additionalProperties: false
CommonPaginationMetadata:
required:
- CurrentPage
- PageSize
- ServerTimeUtc
- TotalNumberOfPages
- TotalNumberOfResults
type: object
properties:
CurrentPage:
type: integer
description: The current page number
format: int32
PageSize:
type: integer
description: The number of results per page
format: int32
TotalNumberOfPages:
type: integer
description: The total number of pages available
format: int32
TotalNumberOfResults:
type: integer
description: The total number of results available for the query
format: int32
ServerTimeUtc:
type: string
description: <strong>Possible values:</strong><br/>2017-07-21T17:32:28Z<br/><br/>The date-time notation as defined by RFC 3339, section 5.6.
format: date-time
additionalProperties: false
PaginatedResponseOfOrderApi:
required:
- Data
- Meta
type: object
properties:
Meta:
$ref: '#/components/schemas/CommonPaginationMetadata'
Data:
type: array
items:
$ref: '#/components/schemas/OrderApi'
additionalProperties: false
CommonError:
type: object
properties:
Field:
type:
- string
- 'null'
ErrorCode:
type:
- string
- 'null'
Message:
type:
- string
- 'null'
Key:
type:
- string
- 'null'
additionalProperties: false
CustomerInvoiceVatApi:
type: object
properties:
AmountInvoiceCurrency:
type: number
format: double
readOnly: true
VatAmountInvoiceCurrency:
type: number
format: double
readOnly: true
VatPercent:
type: number
format: double
readOnly: true
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
OrderRowApi:
required:
- EligibleForReverseChargeOnVat
- IsTextRow
- IsWorkCost
- LineNumber
type: object
properties:
Id:
type: string
description: Unique Id provided by the system for every row
format: uuid
readOnly: true
LineNumber:
maximum: 1000
minimum: 0
type: integer
description: Number of the line in order on the row
format: int32
DeliveredQuantity:
type: number
description: 'Format: 2 decimals'
format: double
ArticleId:
type:
- string
- 'null'
description: Set for article rows. It is null for text rows
format: uuid
IsServiceArticle:
type: boolean
description: True if the article is a service article. False otherwise
readOnly: true
UnitId:
type:
- string
- 'null'
description: 'Source: Get from /v2/units/{id}'
format: uuid
readOnly: true
ArticleNumber:
maxLength: 40
minLength: 0
type:
- string
- 'null'
IsTextRow:
type: boolean
description: True if this is a text row. False otherwise
Text:
maxLength: 2000
minLength: 0
type:
- string
- 'null'
description: 'Default: 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: 'Returns a 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 on 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
WorkHours:
type:
- number
- 'null'
description: Only used for Rot/Rut
format: double
MaterialCosts:
type:
- number
- 'null'
description: Only used for Rot/Rut
format: double
EligibleForReverseChargeOnVat:
type: boolean
description: True if this row is eligible for reverse charge on VAT. False otherwise
VatRate:
type:
- number
- 'null'
description: When row is a text row the value is null. Default value is also null
format: double
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
GreenTechnologyType:
maximum: 3
minimum: 0
type: integer
description: <strong>Possible values:</strong><br/>None = 0,<br/>SolarC
# --- truncated at 32 KB (58 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/visma/refs/heads/main/openapi/visma-orders-api-openapi.yml