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-salesorderbasicv2-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: Visma.net ERP Sales Order Basic V2 API
version: v1
servers:
- url: https://api.finance.visma.net
tags:
- name: SalesOrderBasicV2
paths:
/v2/salesorderbasic/{saleOrderNumber}/action/createShipment:
post:
tags:
- SalesOrderBasicV2
summary: Crete shipment operation
description: The action result dto contains information about the result of running the action
operationId: SalesOrderBasicV2_CreateShipmentActionBysaleOrderNumber
parameters:
- name: saleOrderNumber
in: path
description: Reference number of the sale oreder from which the shipment will be created
required: true
schema:
type: string
- name: erp-api-background
in: header
description: 'Accepts the request and queues it to be executed in the background by our least busy worker. Responds with 202 Accepted and a document containing a JobId reference and details state location.
Supported values:
* a URL: when the background operation is finished, a notification will be posted to the URL with a document containing a reference id, status code and a details state location.
* "none" (without quotes): Fire and forget; no notification will be sent when background operation is finished.
* "subscription[:<name_1>=<value_1>,..,<name_n>=<value_n>]" (without quotes): when the background operation is finsihed, a notification is posted to the Webhook subscription set up in Developer Portal for your integration client.
Optionally a set of name-value pairs can be added. These will be sent as headers in the POST request to the Webhook subscription''s url.
To find status and details of a background-api operation, GET .. v1/background/{id}. To get the response payload of a background-api operation, if any, GET .. v1/background/{id}/content'
schema:
type: string
requestBody:
description: Defines the data for the action
content:
application/json:
schema:
$ref: '#/components/schemas/CreateShipmentActionDto'
text/json:
schema:
$ref: '#/components/schemas/CreateShipmentActionDto'
application/xml:
schema:
$ref: '#/components/schemas/CreateShipmentActionDto'
text/xml:
schema:
$ref: '#/components/schemas/CreateShipmentActionDto'
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/CreateShipmentActionDto'
required: true
x-bodyName: createShipmentActionDto
responses:
'204':
description: NoContent
content:
application/json:
schema:
$ref: '#/components/schemas/CreateShipmentActionResultDto'
text/json:
schema:
$ref: '#/components/schemas/CreateShipmentActionResultDto'
'400':
description: Bad Request
content:
application/json: {}
text/json: {}
'401':
description: Unauthorized
content:
application/json: {}
text/json: {}
'403':
description: Forbidden
content:
application/json: {}
text/json: {}
'404':
description: Not Found
content:
application/json: {}
text/json: {}
'409':
description: Conflict. Order cannot be shipped in full, shipping rule Ship Complete requires all items to be in stock.
content:
application/json: {}
text/json: {}
'500':
description: Internal Server Error
content:
application/json: {}
text/json: {}
'202':
description: Server accepted and queued the request for background execution.
content:
application/json:
schema:
$ref: '#/components/schemas/BackgroundApiAcceptedDto'
text/json:
schema:
$ref: '#/components/schemas/BackgroundApiAcceptedDto'
security:
- interactiveapi: []
/v2/salesorderbasic/{orderType}/{orderNumber}/action/prepareInvoice:
post:
tags:
- SalesOrderBasicV2
summary: Prepare Invoice operation
description: The action result dto contains information about the result of running the action
operationId: SalesOrderBasicV2_PrepareInvoiceActionByorderTypeorderNumber
parameters:
- name: orderType
in: path
description: Order Type of the sale order from which the invoice will be created
required: true
schema:
type: string
- name: orderNumber
in: path
description: Reference number of the sale order from which the invoice will be created
required: true
schema:
type: string
- name: erp-api-background
in: header
description: 'Accepts the request and queues it to be executed in the background by our least busy worker. Responds with 202 Accepted and a document containing a JobId reference and details state location.
Supported values:
* a URL: when the background operation is finished, a notification will be posted to the URL with a document containing a reference id, status code and a details state location.
* "none" (without quotes): Fire and forget; no notification will be sent when background operation is finished.
* "subscription[:<name_1>=<value_1>,..,<name_n>=<value_n>]" (without quotes): when the background operation is finsihed, a notification is posted to the Webhook subscription set up in Developer Portal for your integration client.
Optionally a set of name-value pairs can be added. These will be sent as headers in the POST request to the Webhook subscription''s url.
To find status and details of a background-api operation, GET .. v1/background/{id}. To get the response payload of a background-api operation, if any, GET .. v1/background/{id}/content'
schema:
type: string
responses:
'204':
description: NoContent
content:
application/json:
schema:
$ref: '#/components/schemas/PrepareInvoiceActionResultDto'
text/json:
schema:
$ref: '#/components/schemas/PrepareInvoiceActionResultDto'
'400':
description: Bad Request
content:
application/json: {}
text/json: {}
'401':
description: Unauthorized
content:
application/json: {}
text/json: {}
'403':
description: Forbidden
content:
application/json: {}
text/json: {}
'404':
description: Not Found
content:
application/json: {}
text/json: {}
'500':
description: Internal Server Error
content:
application/json: {}
text/json: {}
'202':
description: Server accepted and queued the request for background execution.
content:
application/json:
schema:
$ref: '#/components/schemas/BackgroundApiAcceptedDto'
text/json:
schema:
$ref: '#/components/schemas/BackgroundApiAcceptedDto'
security:
- interactiveapi: []
/v2/salesorderbasic/{orderType}/{orderNumber}/action/sendbymail:
post:
tags:
- SalesOrderBasicV2
summary: Send by mail operation
description: The action result dto contains information about the result of running the action
operationId: SalesOrderBasicV2_SendEmailActionByorderTypeorderNumber
parameters:
- name: orderType
in: path
description: The type of sale order from which the email will be dispatched.
required: true
schema:
type: string
- name: orderNumber
in: path
description: The number of sale order from which the email will be dispatched.
required: true
schema:
type: string
- name: erp-api-background
in: header
description: 'Accepts the request and queues it to be executed in the background by our least busy worker. Responds with 202 Accepted and a document containing a JobId reference and details state location.
Supported values:
* a URL: when the background operation is finished, a notification will be posted to the URL with a document containing a reference id, status code and a details state location.
* "none" (without quotes): Fire and forget; no notification will be sent when background operation is finished.
* "subscription[:<name_1>=<value_1>,..,<name_n>=<value_n>]" (without quotes): when the background operation is finsihed, a notification is posted to the Webhook subscription set up in Developer Portal for your integration client.
Optionally a set of name-value pairs can be added. These will be sent as headers in the POST request to the Webhook subscription''s url.
To find status and details of a background-api operation, GET .. v1/background/{id}. To get the response payload of a background-api operation, if any, GET .. v1/background/{id}/content'
schema:
type: string
responses:
'204':
description: NoContent
content:
application/json:
schema:
$ref: '#/components/schemas/SendEmailActionResultDto'
text/json:
schema:
$ref: '#/components/schemas/SendEmailActionResultDto'
application/xml:
schema:
$ref: '#/components/schemas/SendEmailActionResultDto'
text/xml:
schema:
$ref: '#/components/schemas/SendEmailActionResultDto'
'400':
description: Bad Request
content:
application/json: {}
text/json: {}
application/xml: {}
text/xml: {}
'401':
description: Unauthorized
content:
application/json: {}
text/json: {}
application/xml: {}
text/xml: {}
'403':
description: Forbidden
content:
application/json: {}
text/json: {}
application/xml: {}
text/xml: {}
'404':
description: Not Found
content:
application/json: {}
text/json: {}
application/xml: {}
text/xml: {}
'500':
description: Internal Server Error
content:
application/json: {}
text/json: {}
application/xml: {}
text/xml: {}
'202':
description: Server accepted and queued the request for background execution.
content:
application/json:
schema:
$ref: '#/components/schemas/BackgroundApiAcceptedDto'
text/json:
schema:
$ref: '#/components/schemas/BackgroundApiAcceptedDto'
application/xml:
schema:
$ref: '#/components/schemas/BackgroundApiAcceptedDto'
text/xml:
schema:
$ref: '#/components/schemas/BackgroundApiAcceptedDto'
security:
- interactiveapi: []
/v2/salesorderbasic/{orderNumber}/attachment:
post:
tags:
- SalesOrderBasicV2
summary: Creates an attachment and associates it with a sales order.
description: Response Message has StatusCode Created if POST operation succeed
operationId: SalesOrderBasicV2_CreateHeaderAttachmentByorderNumber
parameters:
- name: orderNumber
in: path
description: Identifies the sales order
required: true
schema:
type: string
- name: erp-api-background
in: header
description: 'Accepts the request and queues it to be executed in the background by our least busy worker. Responds with 202 Accepted and a document containing a JobId reference and details state location.
Supported values:
* a URL: when the background operation is finished, a notification will be posted to the URL with a document containing a reference id, status code and a details state location.
* "none" (without quotes): Fire and forget; no notification will be sent when background operation is finished.
* "subscription[:<name_1>=<value_1>,..,<name_n>=<value_n>]" (without quotes): when the background operation is finsihed, a notification is posted to the Webhook subscription set up in Developer Portal for your integration client.
Optionally a set of name-value pairs can be added. These will be sent as headers in the POST request to the Webhook subscription''s url.
To find status and details of a background-api operation, GET .. v1/background/{id}. To get the response payload of a background-api operation, if any, GET .. v1/background/{id}/content'
schema:
type: string
responses:
'201':
description: Created
content:
application/json:
schema:
type: object
text/json:
schema:
type: object
'202':
description: Server accepted and queued the request for background execution.
content:
application/json:
schema:
$ref: '#/components/schemas/BackgroundApiAcceptedDto'
text/json:
schema:
$ref: '#/components/schemas/BackgroundApiAcceptedDto'
deprecated: true
security:
- interactiveapi: []
/v2/salesorderbasic/orderType/{orderType}/{orderNumber}/attachment:
post:
tags:
- SalesOrderBasicV2
summary: Creates an attachment and associates it with a sales order on a specific order…
description: Response Message has StatusCode Created if POST operation succeed
operationId: SalesOrderBasicV2_CreateHeaderAttachmentByorderNumberorderType
parameters:
- name: orderNumber
in: path
description: Identifies the sales order
required: true
schema:
type: string
- name: orderType
in: path
description: Identifies the sales order type
required: true
schema:
type: string
- name: erp-api-background
in: header
description: 'Accepts the request and queues it to be executed in the background by our least busy worker. Responds with 202 Accepted and a document containing a JobId reference and details state location.
Supported values:
* a URL: when the background operation is finished, a notification will be posted to the URL with a document containing a reference id, status code and a details state location.
* "none" (without quotes): Fire and forget; no notification will be sent when background operation is finished.
* "subscription[:<name_1>=<value_1>,..,<name_n>=<value_n>]" (without quotes): when the background operation is finsihed, a notification is posted to the Webhook subscription set up in Developer Portal for your integration client.
Optionally a set of name-value pairs can be added. These will be sent as headers in the POST request to the Webhook subscription''s url.
To find status and details of a background-api operation, GET .. v1/background/{id}. To get the response payload of a background-api operation, if any, GET .. v1/background/{id}/content'
schema:
type: string
responses:
'201':
description: Created
content:
application/json:
schema:
type: object
text/json:
schema:
type: object
'202':
description: Server accepted and queued the request for background execution.
content:
application/json:
schema:
$ref: '#/components/schemas/BackgroundApiAcceptedDto'
text/json:
schema:
$ref: '#/components/schemas/BackgroundApiAcceptedDto'
security:
- interactiveapi: []
/v2/salesorderbasic/{orderNumber}/{lineNumber}/attachment:
post:
tags:
- SalesOrderBasicV2
summary: Creates an attachment and associates it with a certain sales order line.
description: Response Message has StatusCode Created if POST operation succeed
operationId: SalesOrderBasicV2_CreateLineAttachmentByorderNumberlineNumber
parameters:
- name: orderNumber
in: path
description: Identifies the sales order
required: true
schema:
type: string
- name: lineNumber
in: path
description: Specifies line number
required: true
schema:
type: integer
format: int32
- name: erp-api-background
in: header
description: 'Accepts the request and queues it to be executed in the background by our least busy worker. Responds with 202 Accepted and a document containing a JobId reference and details state location.
Supported values:
* a URL: when the background operation is finished, a notification will be posted to the URL with a document containing a reference id, status code and a details state location.
* "none" (without quotes): Fire and forget; no notification will be sent when background operation is finished.
* "subscription[:<name_1>=<value_1>,..,<name_n>=<value_n>]" (without quotes): when the background operation is finsihed, a notification is posted to the Webhook subscription set up in Developer Portal for your integration client.
Optionally a set of name-value pairs can be added. These will be sent as headers in the POST request to the Webhook subscription''s url.
To find status and details of a background-api operation, GET .. v1/background/{id}. To get the response payload of a background-api operation, if any, GET .. v1/background/{id}/content'
schema:
type: string
responses:
'201':
description: Created
content:
application/json:
schema:
type: object
text/json:
schema:
type: object
'202':
description: Server accepted and queued the request for background execution.
content:
application/json:
schema:
$ref: '#/components/schemas/BackgroundApiAcceptedDto'
text/json:
schema:
$ref: '#/components/schemas/BackgroundApiAcceptedDto'
deprecated: true
security:
- interactiveapi: []
/v2/salesorderbasic/orderType/{orderType}/{orderNumber}/{lineNumber}/attachment:
post:
tags:
- SalesOrderBasicV2
summary: Creates an attachment and associates it with a certain sales order line on a…
description: Response Message has StatusCode Created if POST operation succeed
operationId: SalesOrderBasicV2_CreateLineAttachmentByorderNumberorderTypelineNumber
parameters:
- name: orderNumber
in: path
description: Identifies the sales order
required: true
schema:
type: string
- name: orderType
in: path
description: Identifies the sales order type
required: true
schema:
type: string
- name: lineNumber
in: path
description: Specifies line number
required: true
schema:
type: integer
format: int32
- name: erp-api-background
in: header
description: 'Accepts the request and queues it to be executed in the background by our least busy worker. Responds with 202 Accepted and a document containing a JobId reference and details state location.
Supported values:
* a URL: when the background operation is finished, a notification will be posted to the URL with a document containing a reference id, status code and a details state location.
* "none" (without quotes): Fire and forget; no notification will be sent when background operation is finished.
* "subscription[:<name_1>=<value_1>,..,<name_n>=<value_n>]" (without quotes): when the background operation is finsihed, a notification is posted to the Webhook subscription set up in Developer Portal for your integration client.
Optionally a set of name-value pairs can be added. These will be sent as headers in the POST request to the Webhook subscription''s url.
To find status and details of a background-api operation, GET .. v1/background/{id}. To get the response payload of a background-api operation, if any, GET .. v1/background/{id}/content'
schema:
type: string
responses:
'201':
description: Created
content:
application/json:
schema:
type: object
text/json:
schema:
type: object
'202':
description: Server accepted and queued the request for background execution.
content:
application/json:
schema:
$ref: '#/components/schemas/BackgroundApiAcceptedDto'
text/json:
schema:
$ref: '#/components/schemas/BackgroundApiAcceptedDto'
security:
- interactiveapi: []
/v2/salesorderbasic:
post:
tags:
- SalesOrderBasicV2
summary: Create a Sale Order
description: 'Response Message has StatusCode Created if POST operation succeed. Response Message has StatusCode BadRequest or InternalServerError if POST operation failed. OBS: End of life March 31 2026. REPLACED BY v3 ENDPOINT. SEE https://salesorder.visma.net/swagger/index.html'
operationId: SalesOrderBasicV2_Post
parameters:
- name: erp-api-background
in: header
description: 'Accepts the request and queues it to be executed in the background by our least busy worker. Responds with 202 Accepted and a document containing a JobId reference and details state location.
Supported values:
* a URL: when the background operation is finished, a notification will be posted to the URL with a document containing a reference id, status code and a details state location.
* "none" (without quotes): Fire and forget; no notification will be sent when background operation is finished.
* "subscription[:<name_1>=<value_1>,..,<name_n>=<value_n>]" (without quotes): when the background operation is finsihed, a notification is posted to the Webhook subscription set up in Developer Portal for your integration client.
Optionally a set of name-value pairs can be added. These will be sent as headers in the POST request to the Webhook subscription''s url.
To find status and details of a background-api operation, GET .. v1/background/{id}. To get the response payload of a background-api operation, if any, GET .. v1/background/{id}/content'
schema:
type: string
requestBody:
description: Defines the data for the Sale Order to create
content:
application/json:
schema:
$ref: '#/components/schemas/SalesOrderBasicUpdateDto'
text/json:
schema:
$ref: '#/components/schemas/SalesOrderBasicUpdateDto'
application/xml:
schema:
$ref: '#/components/schemas/SalesOrderBasicUpdateDto'
text/xml:
schema:
$ref: '#/components/schemas/SalesOrderBasicUpdateDto'
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/SalesOrderBasicUpdateDto'
required: true
x-bodyName: saleOrderUpdateDto
responses:
'201':
description: Created
content:
application/json:
schema:
type: object
text/json:
schema:
type: object
'202':
description: Server accepted and queued the request for background execution.
content:
application/json:
schema:
$ref: '#/components/schemas/BackgroundApiAcceptedDto'
text/json:
schema:
$ref: '#/components/schemas/BackgroundApiAcceptedDto'
deprecated: true
security:
- interactiveapi: []
components:
schemas:
CreateShipmentActionDto:
required:
- orderType
- shipmentDate
- shipmentWarehouse
type: object
properties:
orderType:
type: string
description: Mandatory field
returnShipmentDto:
type: boolean
shipmentDate:
type: string
description: Mandatory field
format: date-time
shipmentWarehouse:
type: string
description: Mandatory field
operation:
type: string
description: 'Operation Type. Possible values: I or R, I = Issue, R = Receipt. If not set it will take the default one defined on Order Type.'
shipViaInShipmentDto:
properties:
id:
type: string
description: Click on the magnifier. > The identifier.
description:
type: string
description: Click on the magnifier. > The description.
description: Delivery settings tab > Shipping information section > Ship via > The carrier used for shipping the goods.
BackgroundApiAcceptedDto:
type: object
properties:
id:
type: string
stateLocation:
type: string
locationInAllocationsDto:
properties:
countryId:
type: string
description: Location*.
id:
type: string
description: Click the magnifier > The identifier
name:
type: string
description: Click the magnifier > The displayed name
description: Location > The location in the warehouse.
TaxDetailDto:
type: object
properties:
taxId:
type: string
description: 'Mandatory field: VAT ID* > The ID of the VAT applied to the document.'
recordId:
type: integer
description: The id as stored in the database. It can be used when we want to update a VAT record.
format: int32
vatId:
$ref: '#/components/schemas/vatIdInTaxDetailDto'
vatRate:
type: number
description: VAT rate > The rate of the VAT.
format: double
taxableAmount:
type: number
description: Taxable amount > The taxable amount for the VAT, which is calculated at the document level.
format: double
vatAmount:
type: number
description: VAT > The VAT amount for the specific VAT, which is calculated at the document level.
format: double
expenseAmount:
type: number
description: Expense Amount for the VAT type that has been added.
format: double
description: This class represents a VAT Detail Line. Used for getting data.
AttachmentDto:
type: object
properties:
name:
type: string
description: The name of the attachment.
id:
type: string
description: The ID of the attachment
format: uuid
example: 00000000-0000-0000-0000-000000000000
revision:
type: integer
description: The version of the attachment.
format: int32
vatIdInTaxDetailDto:
properties:
number:
type: string
description: Number of item
description:
type: string
description: Name of item/description
description: VAT ID > The ID of the specific VAT applied.
locationInShipmentDto:
properties:
countryId:
type: string
description: Location*.
id:
type: string
description: Click the magnifier > The identifier
name:
type: string
description: Click the magnifier > The displayed name
description: 'Mandatory field: The top part > Location* > The customer location to receive the shipment.'
vatRegistrationIdInSalesOrderBasicUpdateDto:
properties:
value:
type: string
description: Mandatory field if Customer or GLN is not specified.
ShipmentDto:
type: object
properties:
timeStamp:
type: string
format: byte
shipmentNumber:
type: string
description: The top part > Shipment no > The unique reference number of the document, which is automatically generated by the system.
shipmentType:
enum:
- Issue
- DropShip
- Transfer
type: string
description: 'The top part > Type > The type of the shipment document, which can be one of the following options: Shipment, Transfer.'
status:
enum:
- Open
- Hold
- Completed
- Cancelled
- Confirmed
- Invoiced
- Receipted
- AutoGenerated
- PartiallyInvoiced
type: string
description: The top part > Status > The status of the document.
hold:
type: boolean
description: The top part > Hold > This check box indicates (if selected) that the documents cannot be processed further until the check box is cleared.
operation:
enum:
- Issue
- Receipt
type: string
description: 'The top part > Operation > The operation to be performed in the Inventory workspace for this shipment: Issue or Receipt.'
shipmentDate:
type: string
description: 'Mandatory field: The top part > Shipment date* > The date when the document has been created.'
format: date-time
customer:
$ref: '#/components/schemas/customerInShipmentDto'
location:
$ref: '#/components/schemas/locationInShipmentDto'
fromWarehouse:
$ref: '#/components/schemas/fromWarehouseInShipmentDto'
toWarehouse:
$ref: '#/components/schemas/toWarehouseInShipmentDto'
currencyId:
type: string
description: Delivery settings tab > Freight currency > By default, it is the currency of the sales order, but you can change it if needed.
owner:
$ref: '#/components/schemas/ownerInShipmentDto'
shippedQuantity:
type: number
description: The top part > Shipped quantity > The quantity of goods shipped.
format: double
shippedWeight:
type: number
description: The top part > Shipped weight > The weight of the goods shipped.
format: double
shippedVolume:
type: number
description: The top part > Shipped volume > The total volume of the items in the shipment.
format: double
packages:
type: integer
description: The top part > Packages > The number of boxes included in this shipment.
format: int32
packagesWeight:
type: number
description: The top part > Package weight > The total weight of the shipment that includes the weight of boxes (for boxes determined automatically).
format: double
packagesVolume:
type: number
description: The top part > Package volume > The total volume of the shipment that includes the volume of boxes (for boxes determined automatically).
format: double
controlQuantity:
type: number
description: The top part > Control quantity > The control value,
# --- truncated at 32 KB (97 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/visma/refs/heads/main/openapi/visma-salesorderbasicv2-api-openapi.yml