Introduction

Welcome to the Silvasoft API documentation! The Silvasoft API allows you to retreive and add data to the Silvasoft cloud in a simple, programmatic way, using the Silvasoft REST API. The endpoints are intuitive and powerful, allowing you to easily make calls to retrieve or add information.

Rate-limits
We have strict rate-limiting in place. Please see the response section for the error format. If you have to make a large amount of API calls we suggest to slow down the requests a bit so you do not exceed the limits. Please note that abusing the API might lead to permanent blocks.

The recommendation to prevent rate-limit or permanent blocks is to sent:

  • Maximum 50 requests per minute
  • Maximum 2 requests per second

Mandatory parameters
If a parameter in the API has an asterix (*) indicator, it means the parameter is mandatory. If a parameter has a double asterix (**) indicator, it means that either one of the parameters with a double asterix is mandatory.

Case sensitive
Please note the API is case sensitive. Make sure to submit all parameters exactly as documented.

Explanation of the documentation structure
The API documentation will start with a general overview about the design and technology that has been implemented, followed by information about specific endpoints. Every endpoint includes an example CURL request and example responses.

Missing something?
Are you missing endpoints in the Silvasoft API? Please file a ticket from your Silvasoft account and we are happy to discuss this and possibly put it on the roadmap for API development.

Get started!
Scroll down to read through the documentation, or directly jump to a specific endpoint using the navigation.

Request and request methods

Request endpoint

The API endpoint base URL is:  https://rest-api.silvasoft.nl. A request is done to the base URL + /rest/endpoint/. For example:  https://rest-api.silvasoft.nl/rest/ListRelations. In the documentation below we have included an example per endpoint.

Request methods

Any tool that is fluent in HTTP can communicate with the API simply by requesting the correct URI. Requests should be made using the HTTPS protocol so that traffic is encrypted. The interface responds to different methods depending on the action required.

Method Usage
GET For retrieval of information from your Silvasoft administration, you should use the GET method. The information you request will be returned to you as a JSON object. Any request using the GET method is read-only and will not affect any of the objects you are querying.
DELETE To delete data from your administration and remove it entirely from the Silvasoft database, use the DELETE method. This will remove the specified object if it is found. If it is not found, the operation will return a response indicating that the object was not found. The final state will be the same regardless of its existence.
PUT To update existing information, the PUT method is available. You cannot create new data using the PUT method.
POST To create a new object, your request should specify the POST method. The POST request includes all of the attributes necessary to create a new object. When you wish to create a new object, send a POST request to the target endpoint.

Authentication (headers)

In order to interact with the Silvasoft API, you or your application must authenticate. The Silvasoft API handles this through an API key which you can retreive from within your Silvasoft dashboard.

The API key functions as the most important part in the authentication process. In effect, it acts as a substitute for a password. Because of this, it is absolutely essential that you keep your API key secure. Upon generation from within Silvasoft, the web interface will only display the token a single time in order to prevent the token from being compromised.

So, in order to authenticate you must make sure you have the API module enabled in your Silvasoft account and you have an API key. To authenticate, Silvasoft expects two header parameters within every request: ApiKey and Username. The username obviously is the username you login to Silvasoft with.

Please note that you might need to add the header Content-Type as well with value “application/json” if your implementation does not add a valid content-type automatically.

An simple CURL example request can be found for every endpoint documentation on this website. The example includes the authentication headers.

Response and common errors

When a request is successful, a response body will typically be sent back in the form of a JSON object or an array of JSON objects.  Every endpoint description on this site includes an example response and explanation of all possible response parameters.

Silvasoft maintains the following response policies:

For every request:

  • HTTP status 401 including an errorMessage JSON object will be returned if authentication fails or ratelimit is exceeded. More information about error messages below.
  • HTTP status 400 including an errorMessage JSON object will be returned if the request was not processed correctly due to for example an error in submitted data or validation errors.
  • HTTP status 500 including an errorMessage JSON object will be returned if a technical error has occurred.

For PUT and POST requests:

  • HTTP status 200 with an empty JSON object will be returned if the object was not updated or created.
  • HTTP status 400 will probably occur instead, which will contain detailed information as to why the request did not succeed.
  • HTTP status 200 with an JSON representation of the update or newly created object will be returned if the request succeeded.

For GET requests:

  • HTTP status 200 with an empty JSON response with will be returned if no objects are found.
  • HTTP status 200 with an JSON array of items will be returned if there are objects found.

In general, when an error occurs, the response will contain JSON information about the error. A typical JSON error message will look like this:

Most common errors are:

  • HTTP 401, UNAUTHORIZED: Ratelimit exceeded
    You have exceeded the maximum requests for the past hour.
  • HTTP 401, UNAUTHORIZED: Invalid authentication credentials
    Your API key or username is incorrect or the combination of both is incorrect.
  • HTTP 400, INVALID_JSON: JSON is incorrect
    You have requested with invalid JSON data. The details are usually in the ‘errorMessage’
  • HTTP 405, METHOD_NOT_ALLOWED: Invalid HTTP method
    The request method is invalid or incompatible with the destination endpoint. 
  • HTTP 500, SYSTEMERROR: An system error has occured within Silvasoft
    If your call generates an technical error within Silvasoft, this error will be returned. 

Less common errors

In some cases the error message might be structured a bit different. This is the case if the error is not generated by our API but by our infrastructure provider before the message reaches our servers.

Several errors could occur, however the 2 most common are:

  • Code: 400, Message: “Unsupported Content-Type header”
    Either the content-type header is missing, or it’s invalid. Please note that the correct “Content-Type” is “application/json” so make sure to submit this in case the error occurs. 
  • Code: 500, Message: “Authentication failed”
    This usually means the submitted JSON data is invalid. Either a syntax error or the JSON is not submitted as JSON body. Make sure to submit valid JSON in the body of the request. 

 

    • GET rest/listrelations/

      • Get a list of relations

This GET method allows you to retreive a list of relations including contact and address details from your administration.

Note:

    • Sorting on “CustomerNumber” or “SupplierNumber” will return zero’s / null values first. Therefore it’s recommended to only use these sorting options in combination with the “RelationType” filter. For example, sort on CustomerNumber only if RelationType is set to “Customer” and sort on SupplierNumber only if RelationType is set to “Supplier”.
    • This endpoint will return a maximum of 200 relations. To retreive all relations use the offset and limit parameters in combination with a sort on created date or relation GUID to ensure an unique list.
  • Request
  • Response

Parameters

RelationType String Details
(optional) Defines what type of relations to retreive. Value should be one of the following: All, Supplier, Customer
RelationNumber String Details
(optional) Filter the requested relations by number. This can be either the supplier number or the customer number
RelationName String Details
(optional) Filter the requested relations by the name of the business or private relation
RelationEmail String Details
(optional) Filter the requested relations by the e-mailadres of the relation
RelationVAT String Details
(optional) Filter the requested relations by the VAT number of the relation. Please note when using this filter, only business relations will be returned since private relations cannot have a VAT number. Also note that this parameter should include the VAT number without country code and without VAT addition such as B01 or B02.
RelationGUID Long Details
(optional) Retreive the relation with the specified GUID (unique identifier). This will always return 0 or 1 results.
SearchOperand String Details
When creating a request with multiple parameters, this setting can be used to switch between "AND" or "OR" condition checking. For example: when both parameters RelationName and RelationEmail are submitted and this setting is set to "AND", the query will only return relation where both RelationName AND RelationEmail match the parameters. However, if this setting is set to "OR" the query will return a list of relations that match with either the RelationName or the RelationEmail. This setting defaults to "AND". This setting only applies to the parameters: RelationNumber, RelationName, RelationEmail and RelationVAT.
ChangedSince Long Details
(optional) An UNIX timestamp in seconds. Will return only relations that are changed since the specified timestamp.
CreatedSince String Details
(optional) An UNIX timestamp in seconds. Will return only relations that are created since the specified timestamp.
Limit Integer Details
Defines the limit of items to retreive
Offset Integer Details
Defines the offset for the retreive
Sorting String Details
An optional sorting parameter. Recommended to use when using LIMIT and OFFSET parameters. Allowed sorting values: RelationGUID, CreatedDate, ChangedDate, CustomerNumber, SupplierNumber, RelationName
SortDir String Details
Defaults to "DESC". Allowed values: "ASC" (low to high) and "DESC" (high to low)

Request Example

Parameters

Email String More info
Relation e-mail address
Phone String More info
Relation phone number
Address_City String More info
City of the correspondence address
Address_Street String More info
Street of the correspondence address
Address_PostalCode String More info
Postalcode of the correspondence address
Address_CountryCode String More info
ISO 3166 (A2) country code of the correspondence address
Address_Unit String More info
Unit number of the correspondence address
Address_UnitAppendix String More info
Appendix (e.g. appartment/suite/floor) for the address unit
GroupName String More info
The name of the CRM group this relation is assoicated with.
IsCustomer Boolean (true|false) More info
Whether the relation is marked as customer or not
IsSupplier Boolean (true|false) More info
Whether the relation is marked as supplier or not
IsOther Boolean (true|false) More info
Wheter the relation is marked as other customer or not
SupplierNumber Integer More info
If the relation is a supplier, this will be the suppliers number
CustomerNumber Integer More info
If the relation is a customer, this will be the relations customernumber
RegistrationNumber String More info
This is the national registration number of the company
TaxIdentificationNumber String More info
This is the VAT number of the company
Relation_Contact Array More info
An JSON array containing the relation contacts
Relation_Contact > Email String More info
Contact e-mail address
Relation_Contact > Phone String More info
Contact phonenumber
Relation_Contact > Sex String More info
Contact Sex (Man|Vrouw)
Relation_Contact > LastName String More info
Contact last name
Relation_Contact > FamilyName String More info
Deprecated, use LastName instead.
Relation_Contact > FirstName String More info
Contact first name
Relation_Contact > Preposition String More info
The family name preposition (In Dutch: tussenvoegsel).
Relation_Contact > ContactNotes String More info
Notes to be added to the contact
Relation_Contact > DefaultContact String More info
Whether this contact is the relations main / default contact or not
PrivateOrBusiness String More info
Wether the relation is a private (cunsumer) or business relation. (PrivateRelation|BusinessRelation)
RelationGUID Long More info
Unique identifier for this relation. This will never change and always stay unique.
CreatedOn Long More info
An UNIX timestamp in seconds reflecting the date and time of creation.
ChangedOn Long More info
An UNIX timestamp in seconds reflecting the date and time of last change.
Relation_CustomField Array More info
An array of custom fields and their values for this relation.
Relation_CustomField > Label String More info
The custom field name / label
Relation_CustomField > DataType String More info
The datatype of this custom field. Can be used to determine which value field is needed. Possible data types: Decimal, Boolean, String, Integer, DateTime
Relation_CustomField > DateTimeValue String Date (dd-MM-yyyy) More info
The date value of the custom field.
Relation_CustomField > DecimalValue Float More info
The decimal value of the custom field
Relation_CustomField > BooleanValue Boolean (true|false) More info
The boolean value of the custom field
Relation_CustomField > StringValue String More info
The string value of the custom field
Relation_CustomField > IntValue String More info
The integer value of the custom field
Relation_CustomField > FieldType String More info
The field type as specified in Sivasoft. Possible field types: Integer, Date, Decimal, TextSmall, TextLarge, Hyperlink, Checkbox, List
Relation_CustomField > TypeOfRelation String More info
Possible values: Customer, Supplier, Other. Specifies whether the field is a customer field, supplier field or other relation field.
Relation_BankAccount > IBAN String More info
The IBAN number for the bank account
Relation_BankAccount > SkipIBANCheck Boolean (true|false) More info
You can skip the IBAN check for the Iban number. In case the Iban check fails, this value will automatically turn to true.
Relation_BankAccount > UseForExcasso Boolean (true|false) More info
Wether the bank account should be used for in- and/or excasso
Relation_BankAccount > BIC String More info
Bank account BIC
Relation_BankAccount > Place String More info
Bank account place
Relation_BankAccount > Name String More info
Bank account name

Response JSON Example

The response order can vary from the parameter order above
    • POST rest/addbusinessrelation/

      • Add a business relation

This POST method allows you to create a new business relation including contact and address details.

Important!
It is very important to understand how your request will be interpreted since this is a specific process and the outcome of your request can be unexpected.

General
First of all, the mandatory parameters are appended with an asterix (*). The rest of the parameters are not mandatory. The response of this request will be the details of the relation. The response format can be found in the ‘ListRelations’ endpoint response description.

Also, the parameters customerNumber and supplierNumber may not be 0. Sending 0 as number will be interpreted as an empty value.

Existing relations
If a relation already exists based on the submitted e-mailadress, company name, customernumber (if customer) or suppliernumber (if supplier), we will always return the existing relation. We will not execute any updates to this relation. Use ‘UpdateRelation’ endpoint instead.

If the relation already exists you can choose whether you still want to create a new (possibly duplicate) relation or if you want to get the existing relation in the response. Use parameters: OnExistingRelationEmail, OnExistingRelationNumber and OnExistingRelationName. Please see explanation below.

Tip: you can use the response parameter ‘createdOn’ to check if the relation was just created by you or already created in the past. This way you can see if the response is an existing relation or the relation you just created.

Parameters “OnExistingRelationEmail”, “OnExistingRelationNumber” and “OnExistingRelationName”
The following parameters in this request needs some explanation: OnExistingRelationEmail, OnExistingRelationNumber and OnExistingRelationName. We will explain these parameters below.

OnExistingRelationEmail This field determines what should happen when the relation you POST already exist, based on the e-mailaddress. The default behaviour is that we will return the already existing relation. However, if you want the creation of the relation to be forced you can add this parameter in your POST. When set to CONTINUE we will continue creating the relation, resulting in you having multiple relations with exactly the same e-mailaddress.

OnExistingRelationName This field determines what should happen when the relation you POST already exist, based on the company name. The default behaviour is that we will return the already existing relation. However, if you want the creation of the relation to be forced you can add this parameter in your POST. When set to CONTINUE we will continue creating the relation, resulting in you having multiple relations with exactly the same name.

OnExistingRelationNumber This field determines how we should behave when the relation you POST already exist, based on the customer- or suppliernumber. The default behaviour is that we will return the already existing relation. However, if you want the creation of the relation to be forced you can add this parameter in your POST. When set to CONTINUE we will continue creating the relation, but with a new, unique number. When set to ABORT (default), we will abort the creation and return the already existing relation instead.

Please note that it is not required to post a cusomter- or suppliernumber. If you leave both numbers empty, we will automatically generate a number for you and return the newly created relation. 

  • Request
  • Response

Parameters

Name* String Details
Relation name
OnExistingRelationEmail String Details
ABORT|CONTINUE (defaults to ABORT)
OnExistingRelationNumber String Details
ABORT|CONTINUE (defaults to ABORT)
OnExistingRelationName String Details
ABORT|CONTINUE (defaults to ABORT)
Email String Details
Relation e-mail address
Phone String Details
Relation phone number
Address_City String Details
City of the correspondence address
Address_Street String Details
Street of the correspondence address
Address_PostalCode String Details
Postalcode of the correspondence address
Address_CountryCode String Details
ISO 3166 (A2) country code of the correspondence address
Address_Unit String Details
Unit number of the correspondence address
Address_UnitAppendix String Details
Unit number appendix. Examples: a, b, or suite c.
IsCustomer Boolean (true|false) Details
Whether the relation is marked as customer or not
IsSupplier Boolean (true|false) Details
Whether the relation is marked as supplier or not
IsOther Boolean (true|false) Details
Wheter the relation is marked as other relation or not
SupplierNumber Integer Details
If the relation is a supplier, this will be the suppliers number
CustomerNumber Integer Details
If the relation is a customer, this will be the relations customernumber
RegistrationNumber String Details
This is the national registration number of the company
TaxIdentificationNumber String Details
Tax/VAT number without country code. Example: 123456789 or 12345678B01
GroupName String Details
The group to associate this relation with. If the group does not exist yet, a new group with the submitted name will be created.
Relation_Contact Array Details
An JSON array of contacts for the relation. The first contact will be used as the relations main contact.
Relation_Contact > Email String Details
Contact e-mail address
Relation_Contact > Phone String Details
Contact phonenumber
Relation_Contact > Sex String Details
Contact Sex (Man|Vrouw)
Relation_Contact > Preposition String Details
The family name preposition (In Dutch: tussenvoegsel).
Relation_Contact > LastName String Details
Contact last name
Relation_Contact > FirstName String Details
Contact first name
Relation_Contact > ContactNotes String Details
Notes to be added to the contact
Relation_CustomField Array Details
An array of custom field values to add to the relation. Custom field with specified label must already be created in Silvasoft (CRM settings)
Relation_CustomField > Label String Details
The label of the custom field. This must match the label as specified in Silvasoft.
Relation_CustomField > FieldType String Details
The fieldtype. Must correspond with the field type as specified in Silvasoft. Possible field types: Integer, Date, Decimal, TextSmall, TextLarge, Hyperlink, Checkbox, List
Relation_CustomField > TypeOfRelation String Details
(optional) Type of relation. You only need to specify this if you have duplicate field names in your custom field configuration across customers, suppliers or other relations. Allowed values: Customer, Supplier, Other.
Relation_CustomField > IntValue Integer Details
If FieldType is Integer you can specify the integer value here
Relation_CustomField > DecimalValue Float Details
If FieldType is Decimal you can specify the decimal value here
Relation_CustomField > BooleanValue Boolean (true|false) Details
If FieldType is Checkbox you can specify the boolean value here
Relation_CustomField > StringValue String Details
If FieldType is TextSmall or TextLarge or List or Hyperlink you can specify the string value here
Relation_CustomField > DateTimeValue Date String (dd-MM-yyyy) Details
If FieldType is Date you can specify the date string here
CreateSalesLead Boolean (true|false) Details
If set to true, a sales lead (Verkoopkans) will also be created for this relation.
Relation_SalesLead Array Details
A JSON array, containing just one item with more information regarding the sales lead. Optional and only applicable if 'CreateSalesLead' is set to True.
Relation_SalesLead > SalesLeadTitle String Details
A custom title for the sales lead to be created
Relation_SalesLead > SalesLeadStage String Details
The sales stage to put the lead in. If no stage is submitted the default stage will be used.
Relation_SalesLead > SalesLeadNotes String Details
Extra notes to be added to the sales lead
Relation_BankAccount > IBAN String Details
The IBAN number for the bank account
Relation_BankAccount > SkipIBANCheck Boolean (true|false) Details
You can skip the IBAN check for the Iban number. In case the Iban check fails, this value will automatically turn to true.
Relation_BankAccount > UseForExcasso Boolean (true|false) Details
Wether the bank account should be used for in- and/or excasso
Relation_BankAccount > BIC String Details
Bank account BIC
Relation_BankAccount > Place String Details
Bank account place
Relation_BankAccount > Name String Details
Bank account name

Request Example

The response will be the just created relation, or the already existing relation. The response format will be the same as the response format for endpoint 'ListRelations'. Please view the 'ListRelations' endpoint for details.

Parameters


Response JSON Example

The response order can vary from the parameter order above
    • POST rest/addprivaterelation/

      • Add a private (consumer) relation

This POST method allows you to create a new private relation (consumer) including contact and address details.

Important!
It is very important to understand how your request will be interpreted since this is a specific process and the outcome of your request can be unexpected.

General
First of all, the mandatory parameters are appended with an asterix (*). The rest of the parameters are not mandatory. The response of this request will be the details of the relation. The response format can be found in the ‘ListRelations’ endpoint response description.

Also, the parameter customerNumber may not be 0. Sending 0 as number will be interpreted as an empty value for this parameter.

Existing relations
If a relation already exists based on the submitted e-mailadress or customernumber, we will always return the existing relation. We will not execute any updates to this relation. Use ‘UpdateRelation’ endpoint instead.

If the relation already exists based on the customernumber or e-mailadress you can still choose whether you still want to create a new (possibly duplicate) relation or if you want to get the existing relation in the response. Use parameters OnExistingRelationEmail and OnExistingRelationNumber for this. Please see explanation below.

Tip: you can use the response parameter ‘createdOn’ to check if the relation was just created by you or already created in the past. This way you can see if the response is an existing relation or the relation you just created.

Parameters “OnExistingRelationEmail”, and “OnExistingRelationNumber”
The following parameters in this request needs some explanation: OnExistingRelationEmail and OnExistingRelationNumber. We will explain both parameters below.

OnExistingRelationEmail This field determines what should happen when the relation you POST already exist, based on the e-mailaddress. The default behaviour is that we will return the already existing relation. However, if you want the creation of the relation to be forced you can add this parameter in your POST. When set to CONTINUE we will continue creating the relation, resulting in you having multiple relations with exactly the same e-mailaddress.

OnExistingRelationNumber This field determines how we should behave when the relation you POST already exist, based on the customernumber. The default behaviour is that we will return the already existing relation. However, if you want the creation of the relation to be forced you can add this parameter in your POST. When set to CONTINUE we will continue creating the relation, but with a new, unique number. When set to ABORT (default), we will abort the creation and return the already existing relation instead.

Please note that it is not required to post a customernumber. If you leave it empty, we will automatically generate a number for you and return the newly created relation.

  • Request
  • Response

Parameters

OnExistingRelationNumber String Details
ABORT|CONTINUE (defaults to ABORT)
Address_City String Details
City of the correspondence address
Address_Street String Details
Street of the correspondence address
Address_PostalCode String Details
Postalcode of the correspondence address
Address_CountryCode String Details
ISO 3166 (A2) country code of the correspondence address
Address_Unit String Details
Unit number of the correspondence address
Address_UnitAppendix String Details
Unit number appendix. Examples: a, b, or suite c.
IsCustomer Boolean (true|false) Details
Whether the relation is marked as customer or not
IsOther Boolean (true|false) Details
Wheter the relation is marked as other relation or not
CustomerNumber Integer Details
If the relation is a customer, this will be the relations customernumber
GroupName String Details
The group to associate this relation with. If the group does not exist yet, a new group with the submitted name will be created.
Relation_Contact * Array Details
An JSON array of contacts for the relation. The first contact will be used as the relations main contact.
Relation_Contact > Email String Details
Contact e-mail address
Relation_Contact > Phone String Details
Contact phonenumber
Relation_Contact > Sex String Details
Contact Sex (Man|Vrouw)
Relation_Contact > LastName * String Details
Contact last name
Relation_Contact > FirstName * String Details
Contact first name
Relation_Contact > ContactNotes String Details
Notes to be added to the contact
Relation_CustomField Array Details
An array of custom field values to add to the relation. Custom field with specified label must already be created in Silvasoft (CRM settings)
Relation_CustomField > Label String Details
The label of the custom field. This must match the label as specified in Silvasoft.
Relation_CustomField > FieldType String Details
Relation_CustomField > FieldType
Relation_CustomField > TypeOfRelation String Details
(optional) Type of relation. You only need to specify this if you have duplicate field names in your custom field configuration across customers, suppliers or other relations. Allowed values: Customer, Supplier, Other.
Relation_CustomField > IntValue Integer Details
If FieldType is Integer you can specify the integer value here
Relation_CustomField > DecimalValue Float Details
If FieldType is Decimal you can specify the decimal value here
Relation_CustomField > BooleanValue Boolean (true|false) Details
If FieldType is Checkbox you can specify the boolean value here
Relation_CustomField > StringValue String Details
If FieldType is TextSmall or TextLarge or List or Hyperlink you can specify the string value here
Relation_CustomField > DateTimeValue String Details
If FieldType is Date you can specify the date string here
CreateSalesLead Boolean (true|false) Details
If set to true, a sales lead (Verkoopkans) will also be created for this relation.
Relation_SalesLead Array Details
A JSON array, containing just one item with more information regarding the sales lead. Optional and only applicable if 'CreateSalesLead' is set to True.
Relation_SalesLead > SalesLeadTitle String Details
A custom title for the sales lead to be created
Relation_SalesLead > SalesLeadStage String Details
The sales stage to put the lead in. If no stage is submitted the default stage will be used.
Relation_SalesLead > SalesLeadNotes String Details
Extra notes to be added to the sales lead
Relation_BankAccount > IBAN String Details
The IBAN number for the bank account
Relation_BankAccount > SkipIBANCheck Boolean (true|false) Details
You can skip the IBAN check for the Iban number. In case the Iban check fails, this value will automatically turn to true.
Relation_BankAccount > UseForExcasso Boolean (true|false) Details
Wether the bank account should be used for in- and/or excasso
Relation_BankAccount > BIC String Details
Bank account BIC
Relation_BankAccount > Place String Details
Bank account place
Relation_BankAccount > Name String Details
Bank account name

Request Example

The response will be the just created relation, or the already existing relation. The response format will be the same as the response format for endpoint 'ListRelations'. Please view the 'ListRelations' endpoint for details.

Parameters


Response JSON Example

The response order can vary from the parameter order above
    • PUT rest/updaterelation/

      • Update a CRM relation

This PUT method allows you to update information for a CRM relation. The relation to be updated is identified by the ‘RelationGUID’ parameter.

RelationGUID
Every relation has an unique identifier. Using the ListRelations endpoint you can extract the identifier for each relation.

  • Request
  • Response

Parameters

RelationGUID * Long Details
The unique identifier of the relation to be update
Email String Details
Relation e-mail address
Phone String Details
Relation phone number
RegistrationNumber String Details
This is the national registration number of the company. Only applies to business relations.
TaxIdentificationNumber String Details
Tax/VAT number without country code. Example: 123456789 or 12345678B01. Only applies to business relations.
Name String Details
Relation name. Only applies to business relations.
Address_City String Details
City of the correspondence address
Address_Street String Details
Street of the correspondence address
Address_PostalCode String Details
Postalcode of the correspondence address
Address_CountryCode String Details
ISO 3166 (A2) country code of the correspondence address
Address_Unit String Details
Unit number of the correspondence address
Address_UnitAppendix String Details
Unit number appendix. Examples: a, b, or suite c.
SupplierNumber Integer Details
If the relation is a supplier, this will be the suppliers number
CustomerNumber Integer Details
If the relation is a customer, this will be the relations customer number. Please note that this number must be unique in your administration.
IsSupplier Boolean (true|false) Details
Whether the relation is marked as suplier or not
IsCustomer Boolean (true|false) Details
Whether the relation is marked as customer or not
IsOther Boolean (true|false) Details
Whether the relation is marked as other relation or not
Relation_Contact Array Details
An JSON array with contact information to update the relation main contact. At the moment only one contact is supported.
Relation_Contact > Email String Details
Contact e-mail address
Relation_Contact > Phone String Details
Contact phonenumber
Relation_Contact > Sex String Details
Contact Sex (Man|Vrouw)
Relation_Contact > LastName String Details
Contact last name
Relation_Contact > FirstName String Details
Contact first name
Relation_Contact > ContactNotes String Details
Notes to be added to the contact
Relation_CustomField Array Details
An array of custom field values to add to the relation. Custom field with specified label must already be created in Silvasoft (CRM settings)
Relation_CustomField > Label String Details
The label of the custom field. This must match the label as specified in Silvasoft.
Relation_CustomField > FieldType String Details
The fieldtype. Must correspond with the field type as specified in Silvasoft. Possible field types: Integer, Date, Decimal, TextSmall, TextLarge, Hyperlink, Checkbox, List
Relation_CustomField > TypeOfRelation String Details
(optional) Type of relation. You only need to specify this if you have duplicate field names in your custom field configuration across customers, suppliers or other relations. Allowed values: Customer, Supplier, Other.
Relation_CustomField > IntValue Integer Details
If FieldType is Integer you can specify the integer value here
Relation_CustomField > DecimalValue Float Details
If FieldType is Decimal you can specify the decimal value here
Relation_CustomField > BooleanValue Boolean (true|false) Details
If FieldType is Checkbox you can specify the boolean value here
Relation_CustomField > StringValue String Details
If FieldType is TextSmall or TextLarge or List or Hyperlink you can specify the string value here
Relation_CustomField > DateTimeValue Date String (dd-MM-yyyy) Details
If FieldType is Date you can specify the date string here
Relation_BankAccount > IBAN String Details
The IBAN number for the bank account
Relation_BankAccount > SkipIBANCheck Boolean (true|false) Details
You can skip the IBAN check for the Iban number. In case the Iban check fails, this value will automatically turn to true.
Relation_BankAccount > UseForExcasso Boolean (true|false) Details
Wether the bank account should be used for in- and/or excasso
Relation_BankAccount > BIC String Details
Bank account BIC
Relation_BankAccount > Place String Details
Bank account place
Relation_BankAccount > Name String Details
Bank account name

Request Example

The response will be the updated relation. The response format will be the same as the response format for endpoint 'ListRelations'. Please view the 'ListRelations' endpoint for details.

Parameters


Response JSON Example

The response order can vary from the parameter order above
    • GET rest/listproducts

      • Get a list of products

Retreive a list of products from your administration. A maximum of 100 products will be returned at once. Use offset and limit parameters to retrieve more products over multiple calls. It is also possible to retreive just one specific product by adding the ArticleNumber or EAN request parameter.

  • Request
  • Response

Parameters

Category String Details
An optional parameter to only retreive products from one specific category
ArticleNumber String Details
An optional parameter to retreive only the product with exactly this articlenumber. The result will never be more than one item.
EAN String Details
An optional parameter to retrieve only the product with exactly this EAN code. The result will never be more than one item.
ChangedSince String Details
(optional) An UNIX timestamp in seconds. Will return only relations that are changed since the specified timestamp.
CreatedSince String Details
(optional) An UNIX timestamp in seconds. Will return only relations that are created since the specified timestamp.
Limit Integer Details
Defines the limit of items to retreive
Offset Integer Details
Defines the offset for the retreive
IncludeArchived Boolean (true|false) Details
Whether to include archived products (true) or not (false). Defaults to false.
IncludeStockPositions Boolean (true|false) Details
Whether to include information about stock positions (dutch: "Voorraadposities"). For example stock per warehouse / shelf / batch. Defaults to false.

Request Example

Parameters

Name String More info
The product name
ArticleNumber String More info
The article number (not nessecarily numeric)
Category String More info
Category name for this product
EAN String More info
Product EAN code
Description String More info
Product description, limited to 400 characters
StockQty Float More info
The actual stock quantity
PurchasePrice Float More info
The latest purchase price
Price Float More info
The default sale price excluding VAT
VATPercentage Float More info
The VAT percentage
Unit String More info
The product unit (example: 'piece' or 'hour')
MinimalStockQty Float More info
The minimal amount of stock for this product as specified in Silvasoft.
QtyInSalesOrder String More info
The stock quantity currently reserved by sales orders
QtyInPurchaseOrder String More info
The stock quantity currently expected by purchase orders
QtySalable String More info
The 'salable' stock quantity which is the actual quantity PLUS QtyInPurchaseOrder MINUS QtyInSalesOrder
SupplierArticleNumber String More info
The articlenumber of the default supplier for this article.
CreatedOn Long More info
An UNIX timestamp in seconds reflecting the date and time of creation.
ChangedOn Long More info
An UNIX timestamp in seconds reflecting the date and time of last change.
ProductOrService String More info
Whether the article is marked as 'Product' or as 'Service' in Silvasoft.
DeliveryPeriod String More info
The delivery period (in days) as configured for this product
Archived Boolean (true|false) More info
Whether the product is archived or not.
ProductResponse_CustomField Array More info
An array of custom fields and their values for this product
ProductResponse_CustomField > Label String More info
The custom field name / label
ProductResponse_CustomField > DataType String More info
The datatype of this custom field. Can be used to determine which value field is needed. Possible data types: Decimal, Boolean, String, Integer, DateTime
ProductResponse_CustomField > DateTimeValue String Date (dd-MM-yyyy) More info
The date value of the custom field
ProductResponse_CustomField > DecimalValue Float More info
The decimal value of the custom field
ProductResponse_CustomField Boolean (true|false) More info
The boolean value of the custom field
ProductResponse_CustomField > StringValue String More info
The string value of the custom field
ProductResponse_CustomField > IntValue Integer More info
The integer value of the custom field
ProductResponse_CustomField > FieldType String More info
The field type as specified in Sivasoft. Possible field types: Integer, Date, Decimal, TextSmall, TextLarge, Hyperlink, Checkbox, List
Product_StockPosition Array More info
An array of stock positions for this product
Product_StockPosition > Warehouse String More info
If the position is associated to a warehouse this will show the warehouse name
Product_StockPosition > Shelf String More info
If the position is associated to a shelf this will show the shelf name
Product_StockPosition > Batch String More info
If the position is associated to a batch this will show the batch name / number
Product_StockPosition > MinimalStockQty Float More info
The minimal stock quantity for this position as configured in Silvasoft
Product_StockPosition > StockQty Float More info
The actual stock quantity for this position
Product_StockPosition > QtyInSalesOrder Float More info
The stock quantity currently reserved by sales orders
Product_StockPosition > QtyInPurchaseOrder Float More info
The stock quantity currently expected by purchase orders
Product_StockPosition > QtySalable Float More info
The 'salable' stock quantity which is the actual quantity PLUS QtyInPurchaseOrder MINUS QtyInSalesOrder
IsCombinationProduct Boolean (true|false) More info
Whether the product is a combined/grouped product ("Verzamelproduct in Silvasoft")
Products_SubProduct Array More info
An array of subproducts associated with this product. Only filled if "IsCombinationProduct" = true and if there are subproducts associated in Silvasoft
Products_SubProduct > Name String More info
The name of the sub product
Products_SubProduct > ArticleNumber String More info
The articlenumber of the sub product
Products_SubProduct > Quantity Float More info
The quantity with which this sub product is associated with the combined/grouped product

Response JSON Example

The response order can vary from the parameter order above
    • POST rest/addproduct/

      • Add a product (article)

This POST method allows you to create a new product (catalog article).

Notes:

  • ArticleNumber, NewName and CategoryName are mandatory fields
  • You can set CategoryCreateIfMissing to true if you want the category to be created if it is not found.
  • The request and response parameters are the same as the request parameters for the endpoint ‘UpdateProduct’. Please see the endpoint updateproduct for more details.
  • Request
  • Response

Parameters

SEE ENDPOINT UpdateProduct String Details
Alle request parameters allowed for the endpoint UpdateProduct are allowed for this endpoint as well. The additional parameters are listed below.

Request Example

The response will be an array containing one item which is the just created product. The returned parameters are the same as the response parameters for the endpoint UpdateProduct.

Parameters


Response JSON Example

The response order can vary from the parameter order above
    • PUT rest/updateproduct/

      • Update information for a specific product

Update some product fields for a specific product. For example update product stock quantity or product price.

Note that it is not required to set all request parameters. For example, if you just want to update the stock value, there is no need to set the NewName parameter as well.

Updating the stock quantity for a grouped product ('verzamelproduct')?
Please read the following notes when updating the stock quantity for grouped products:

  • Updating the stock of a grouped product can only be a relative update. The parameter ‘StockUpdateMode’ is ignored because of this.
  • The returned stock quantity will be the newly calculated stock quantity for the grouped product.
  • Updating a grouped product will update ALL child products with the given stock quantity based on the amount set in the grouped product.
  • An example: your grouped product consists of 10 times product X and 4 times product Y. Now let’s say you want to update the grouped product with say a ‘NewStockQty’ of 2. This means you have 2 extra units available for your grouped product. Meaning this will increase the stock quantity for product X with 20 and product Y with 8.
  • Request
  • Response

Parameters

ArticleNumber ** String Details
You can use either AirtcleNumber or EAN to select the product to be updated.
EAN ** String Details
You can use either AirtcleNumber or EAN to select the product to be updated.
CategoryName String Details
The name of the category to associate the product with.
CategoryCreateIfMissing Boolean (true|false) Details
Defaults to false. Whether to create the category or not if it does not exist. If set to false (default) the product will not be added if the category is not found.
NewName String Details
The updated productname
NewSupplierArticleNumber String Details
The updated articlenumber used by the product's supllier
NewDescription String Details
The updated product description
NewSalePrice Float Details
The update product sale price
NewStockQty Float Details
If you want to update the products stock quantity, enter the amount here.
StockUpdateMode String Details
Choose either "Relative" or "Absolute" (defaults to Relative). Relative means: add the specified amount in the 'NewStockQty' parameter to the product stock quantity. Absolute means: set the product stock quantity to the value of 'NewStockQty'
NewStockMutationComment String Details
An optional description for this stock mutation
NewStockMutationPurchasePrice Float Details
The purchase costs for this stock modification (only applicable if stock is added / if NewStockQty is a positive value).
NewVATPercentage Float Details
The VAT percentage for this product, identified by a numeric %. Example value: 21 to update the VAT to 21%.
TaxCode String Details
The VAT percentage for this product, idenitifed by it's tax code. For example if you have multiple tax codes with the same percentage, you can identify a specific tax code with this parameter.
NewUnit String Details
The name of the product unit (for example: 'piece' or 'hour')
NewPurchasePrice Float Details
The purchase price (for the main / default supplier)
NewPurchasePriceVATPercentage Float Details
The purchase price VAT percentage, indentified by a numeric %. Example value: 21 to update the VAT to 21%.
TaxCodePurchase String Details
The purchase price VAT percentage for this product, idenitifed by it's tax code. For example if you have multiple tax codes with the same percentage, you can identify a specific tax code with this parameter.
Archived Boolean (true|false) Details
If set to true the product will be archived. Defaults to false.
Product_CustomField Array Details
An array of custom field values to add to the product. Custom field with specified label must already be created in Silvasoft (Product module settings)
Product_CustomField > Label String Details
The label of the custom field. This must match the label as specified in Silvasoft.
Product_CustomField > FieldType String Details
The fieldtype. Must correspond with the field type as specified in Silvasoft. Possible field types: Integer, Date, Decimal, TextSmall, TextLarge, Hyperlink, Checkbox, List
Product_CustomField > IntValue Integer Details
If FieldType is Integer you can specify the integer value here
Product_CustomField > DecimalValue Float Details
If FieldType is Decimal you can specify the decimal value here
Product_CustomField > BooleanValue Boolean (true|false) Details
If FieldType is Checkbox you can specify the boolean value here
Product_CustomField > StringValue String Details
If FieldType is TextSmall or TextLarge or List or Hyperlink you can specify the string value here
Product_CustomField > DateTimeValue Date String (dd-MM-yyyy) Details
If FieldType is Date you can specify the date string here
Product_Batch (deprecated) Array Details
Deprecated: this method is deprecated. Eventough it is still usuable be advised to use the 'Product_StockPosition'. An array of batch- or serienumbers to add or update for the product. If an existing batch is found the existing batch will be updated. Otherwise a new batch will be added to the product.
Product_Batch > Description (deprecated) String Details
Deprecated: this method is deprecated. Eventough it is still usuable be advised to use the 'Product_StockPosition'. The description of the batch to be updated / added.
Product_Batch > BatchExpiryDate (deprecated) Date String (dd-MM-yyyy) Details
Deprecated: this method is deprecated. Eventough it is still usuable be advised to use the 'Product_StockPosition'. The expiry date for the batch.
Product_Batch > BatchStockQty (deprecated) Float Details
Deprecated: this method is deprecated. Eventough it is still usuable be advised to use the 'Product_StockPosition'. The new stock quantity for the batch. Leave empty if you do not want to update the stock quantity.
BatchMatchMode (deprecated) String Details
Deprecated: this method is deprecated. Eventough it is still usuable be advised to use the 'Product_StockPosition'. Used in combination with the "Product_Batch" parameters below. Choose either "Description" or "Description_and_date". When set to "Description" we will search for a matching batch based on only the description. When set to "Description_and_date" we will search for a matching batch based on both the description and the expiry date. If no match is found we will create a new batch.
BatchStockUpdateMode (deprecated) String Details
Deprecated: this method is deprecated. Eventough it is still usuable be advised to use the 'Product_StockPosition'.Used in combination with the "Product_Batch" parameters below. Choose either "Relative" or "Absolute" (defaults to Relative). This setting applies to the stock updates performed for batches (see below). Relative means: add the specified amount in the 'BatchStockQty' parameter to the batch stock quantity. Absolute means: set the batch stock quantity to the value of 'BatchStockQty'.
StockPositionStockUpdateMode String Details
Used in combination with the "Product_StockPosition" parameters below. Choose either "Relative" or "Absolute" (defaults to Relative). This setting applies to the stock updates performed for batches (see below). Relative means: add the specified amount in the 'StockQty' parameter to the stock positon stock quantity. Absolute means: set the stock quantity to the value of 'StockQty'.
Product_StockPosition String Details
An array of stock postions to add or update for the product. If an existing stock postion is found the existing stock postion will be updated. Otherwise a new stock postion will be added to the product.
Product_StockPosition > Warehouse String Details
The description of the warehouse of the stock postions to be updated / added.
Product_StockPosition > Shelf String Details
The description of the shelf of the stock postions to be updated / added.
Product_StockPosition > Batch String Details
The description of the batch of the stock postions to be updated / added.
Product_StockPosition > StockQty String Details
The new stock quantity for the stock postion . Leave empty if you do not want to update the stock quantity.
Product_StockPosition > MinimalStockQty String Details
The minimal stock quantity for the stock postion.

Request Example

The response will be an array containing just one item which is the just updated product.

Parameters

Name String More info
The updated product name
ArticleNumber String More info
The article number (not nessecarily numeric)
SupplierArticleNumber String More info
The articlenumber of the default supplier for this article.
Category String More info
Category name for this product
EAN String More info
Product EAN code
Description String More info
Product description, limited to 400 characters
StockQty Float More info
The actual stock quantity
PurchasePrice Float More info
The latest purchase price
Price Float More info
The default sale price excluding VAT
VATPercentage Float More info
The VAT percentage
MinimalStockQty Float More info
The minimal required stock quantity for this product as configured in Silvasoft.
UnitsPerPackage Float More info
The suppliers units per package. In Silvasoft this is known as 'verpakkingseenheid'.
Unit String More info
The product unit (for example: 'piece' or 'hour')
CreatedOn String More info
An UNIX timestamp in seconds reflecting the date and time of creation.
ChangedOn String More info
An UNIX timestamp in seconds reflecting the date and time of last change.
ProductResponse_CustomField Array More info
An array of custom fields and their values for this product
ProductResponse_CustomField > Label String More info
The custom field name / label
ProductResponse_CustomField > DataType String More info
The datatype of this custom field. Can be used to determine which value field is needed. Possible data types: Decimal, Boolean, String, Integer, DateTime
ProductResponse_CustomField > DateTimeValue String Date (dd-MM-yyyy) More info
The date value of the custom field
ProductResponse_CustomField > DecimalValue Float More info
The decimal value of the custom field
ProductResponse_CustomField Boolean (true|false) More info
The boolean value of the custom field
ProductResponse_CustomField > StringValue String More info
The string value of the custom field
ProductResponse_CustomField > IntValue Integer More info
The integer value of the custom field
ProductResponse_CustomField > FieldType String More info
The field type as specified in Sivasoft. Possible field types: Integer, Date, Decimal, TextSmall, TextLarge, Hyperlink, Checkbox, List

Response JSON Example

The response order can vary from the parameter order above
    • GET rest/listorders/

      • Retrieve a list of sales orders

Retrieve a list of sales orders from your administration. A maximum of 50 orders will be returned at once. Use offset and limit parameters to retrieve more orders over multiple calls.

  • Request
  • Response

Parameters

Limit Integer Details
Defines the limit of items to retreive
Offset Integer Details
Defines the offset for the retreive
DateFrom Date String (dd-MM-yyyy) Details
Filter on orderdate in format dd-MM-yyyy. (http://docs.oracle.com/javase/6/docs/api/java/text/SimpleDateFormat.html). Default to no from date filter. Will only return orders with orderdate after the specified date.
DateTill Date String (dd-MM-yyyy) Details
Filter on orderdate in format dd-MM-yyyy. (http://docs.oracle.com/javase/6/docs/api/java/text/SimpleDateFormat.html) Defaults to no till date. Will only return orders with orderdate before the specified date.
ChangedSince String Details
An UNIX timestamp in seconds. Will return only orders that are changed since the specified timestamp.
ChangedTill String Details
An UNIX timestamp in seconds. Will return only orders that are changed before the specified timestamp.
CreatedSince String Details
An UNIX timestamp in seconds. Will return only orders that are created since the specified timestamp.
CreatedTill String Details
An UNIX timestamp in seconds. Will return only orders that are created before the specified timestamp.
HtmlAsPlainText Boolean (true|false) Details
Whether the rich-text fields will be returned as plain text or not. Defaults to false.
OrderStatus String Details
A filter on order status (custom order status in Silvasoft). If specified the request will return only orders with the current status matching the status specified here.

Request Example

The response will be a list (JSON array) of retrieved orders. The returned are exactly the same as the returned parameters which are returned by the endpoint 'AddOrder'. Please check the response specifications for the endpoint 'AddOrder' for more info. For your convenience we have included a response example below.

Parameters


Response JSON Example

The response order can vary from the parameter order above
    • POST rest/addorder/

      • Add a sales order

This POST method allows you to create a new order with multiple orderlines, associated to a customer.

Notes:

  • Maximum 75 orderlines per order allowed.
  • If CustomerNumber is used to identify the customer, the parameters CustomerName and CustomerEmail will be ignored.
  • If CustomerName or CustomerEmail is used to identify the customer, and you have multiple customers that match, we will use the first found match.
  • The parameters CustomerName and CustomerEmail can also be used combined. When both parameters are submitted, the system will search for relations where both name and e-mail match with the submitted parameters.
  • Submitting an address is optional, if no address is submitted the default address for the relation will be used. When an address is submitted we will add the address to the relation file (CRM), if the address does not already exist. You can submit both a billing and shipping address using the ‘Address_Type’ field.
  • When submitting attachments you can either submit it by URL (Silvasoft will download the file from the URL) or as a binary string in the field ‘FileContent’. In both cases the file will be mime checked and it cannot be greater than 10mb. When using ‘FileContent’ you must supply a name as well.
  • Request
  • Response

Parameters

CustomerNumber ** Integer Details
The customer, identified by its customer number, to be associated with the order
CustomerName ** String Details
The customer, identified by its name, to be associated with the order
CustomerEmail ** String Details
The customer, identified by its e-mailaddress, to be associated with the order
OrderDate Date String (dd-MM-yyyy) Details
The order date in format dd-MM-yyyy. (http://docs.oracle.com/javase/6/docs/api/java/text/SimpleDateFormat.html) Defaults to current date.
CreatedOn Long Details
An UNIX timestamp in seconds reflecting the date and time of creation.
ChangedOn Long Details
An UNIX timestamp in seconds reflecting the date and time of last change.
OrderNotes String Details
Custom order notes / order description
OrderDiscountPc Float Details
Discount % to be applied to the order. This will always be deducted from the total, even if you submit "SubTotalInclTax" for your orderlines.
OrderStatus String Details
Optional orderstatus to be associated with the order. If the status is not present in your Silvasoft administration the order will still be added, but the status will not be added to the order.
DeliveryPeriod Integer Details
The delivery period (in days) for this order
GeneralStatus String Details
Choose between: "concept_quote", "final_quote" and "order". If concept_quote it will be created as a concept quote in Silvasoft. If final_quote it will be created as a final quote in Silvasoft. If order (default) it will be created as order in Silvasoft. This impacts in which overview and with which status the quote/order will be shown in Silvasoft.
OrderReference String Details
Order reference number or text (max. 150 characters)
HtmlAsPlainText Boolean (true|false) Details
Whether the response rich-text fields will be returned as plain text or not. Defaults to false.
PackingSlipNotes String Details
Extra notes for the packing slip
Order_Orderline * Array Details
An JSON array of orderlines
Order_Orderline > ProductNumber ** String Details
The productnumber of the product to be associated with the orderline.
Order_Orderline > ProductEAN ** String Details
The product EAN code of the product to be associated with the orderline.
Order_Orderline > Quantity * Float Details
Quantity of items in this orderline
Order_Orderline > UnitPriceExclTax Float Details
Price per ordered unit
Order_Orderline > TaxPc Float Details
The VAT percentage for this order line, identified by a numeric %. Example value: 21 to use VAT 21%. Please note that this percentage must be available within your Silvasoft administration. If no tax details are submitted Silvasoft will use the tax percentage as configured for the product.
Order_Orderline > TaxCode String Details
The VAT percentage for this order line, idenitifed by it's tax code. For example if you have multiple tax codes with the same percentage, you can identify a specific tax code with this parameter. If no tax details are submitted Silvasoft will use the tax percentage as configured for the product.
Order_Orderline > SubTotalInclTax Float Details
The orderline subtotal, including taxes. When this parameter is set, the price per unit will be ignored and automatically calculated. If this parameter is not submitted then the subtotal will be the "Quantity" times "UnitPriceExclTax" times tax. Please note that this field behaves as a line total, including taxes, including line discount, excluding order discount. So this price will never change, except when an order discount is submitted ("OrderDiscountPc").
Order_Orderline > Description String Details
Orderline description
Order_Orderline > IsTextLine Boolean (true|false) Details
If this is a text line you can set this to true and omit price and tax fields
Order_Orderline > TextLineCategory String Details
Optionally submit the name of the text category. If nothing is submitted the default text category will be used.
Order_Orderline > DiscountPc String Details
Orderline discount %. Please note that the behaviour of line discount depends on how your submit your line total. If you submit the "SubTotalInclTax" then the discount will be added, but not change the line total since the "SubTotalInclTax" behaves as a subtotal, AFTER discount. However, if you submit only a "Quantity" and a "UnitPriceExclTax" then the discount will be applied to the subtotal of "Quantity" times "UnitPriceExclTax" since this combination behaves as a total price BEFORE discount.
Order_Orderline > DiscountAmountInclTax String Details
Orderline discount amount in EUR. Please note that the behaviour of line discount depends on how your submit your line total. If you submit the "SubTotalInclTax" then the discount will be added, but not change the line total since the "SubTotalInclTax" behaves as a subtotal, AFTER discount. However, if you submit only a "Quantity" and a "UnitPriceExclTax" then the discount will be applied to the subtotal of "Quantity" times "UnitPriceExclTax" since this combination behaves as a total price BEFORE discount.
Order_Orderline > UseArticlePrice Boolean (true|false) Details
If set to true (default is false) you will not need to supply any price details for this line. Silvasoft will get the default product price and discount rules for the article or article category, as configured within your administration.
Order_Address Array Details
A JSON array of addresses. If no address is submitted the default address for the relation will be used.
Order_Address > Address_City String Details
The address (city) to be used for the invoice. If the address does not already exist it will be added as a new address to the customer (CRM).
Order_Address > Address_Street String Details
The address (street) to be used for the invoice. If the address does not already exist it will be added as a new address to the customer (CRM).
Order_Address > Address_PostalCode String Details
The address (postalcode) to be used for the invoice. If the address does not already exist it will be added as a new address to the customer (CRM).
Order_Address > Address_CountryCode String Details
The address (ISO 3166 (A2) countrycode) to be used for the invoice. If the address does not already exist it will be added as a new address to the customer (CRM).
Order_Address > Address_Unit String Details
The address (unit) to be used for the invoice. If the address does not already exist it will be added as a new address to the customer (CRM).
Order_Address > Address_UnitAppendix String Details
The address (unit appendix) to be used for the invoice. If the address does not already exist it will be added as a new address to the customer (CRM).
Order_Address > Address_Type String Details
Allowed values: ShippingAddress and BillingAddress. Shipping_Address will be used for the packing slip. If no ShippingAddress is submitted the billing address will be used for the packing slip.
Order_Attachment Array Details
An array of attachments to add to this order.
Order_Attachment > FileUrl String Details
Method 1: Add an attachment by using a URL pointing to the file to be attached to the order. The file will be downloaded and added as attachment to the order. If the file is not downloadable, the order will still be created but without the attachment. The file URL must end with one of the following file extensions in order for it to be added to the order: .jpg, .png, .pdf, .doc, .docx, .xls, .xlsx
Order_Attachment > FileContent String Details
Method 2: Add a file as a binary string. When this field is submitted you MUST submit a FileName as well.
Order_Attachment > Internal Boolean (true|false) Details
Whether the attachment is 'Internal' (true) or 'Public' (false). Defaults to false.
Order_Attachment > FileName String Details
The name of the attachment WITH extension. Required when using 'FileContent'. Optional when using 'FileUrl'. If left empty a name will be auto-generated based on the current timestamp.
Order_SalesPerson Array Details
An array containing the salesperson. Only the first person will be used
Order_SalesPerson > FirstName String Details
Salesperson's first name
Order_SalesPerson > LastName String Details
Salesperson's last name
Order_SalesPerson > Prefix String Details
Salesperson's prefix
TemplateName_Order String Details
The template name to be used to generate the PDF order. If empty or not found the system will fall back to the default template or the template configured for the relation.
TemplateName_Email String Details
The template name to be used to generate the e-mail contents. If empty or not found the system will fall back to the default template or the template configured for the relation.
TemplateName_PackingSlip String Details
The template name to be used to generate the PDF packingslip. If empty or not found the system will fall back to the default template or the template configured for the relation.
TemplateName_Email_PackingSlip String Details
The template name to be used to generate the e-mail contents. If empty or not found the system will fall back to the default template or the template configured for the relation.
Order_Contact Array Details
A JSON array of order contacts. At the moment this will contain the main order contact and the packingslip contact (if applicable).
Order_Contact > ContactType String Details
Order|PackingSlip
Order_Contact > FirstName String Details
Order_Contact > Phone String Details
Order_Contact > Email String Details
Order_Contact > Sex String Details
Contact sex (Man|Vrouw)
Order_Contact > LastName String Details
Order_Contact > ContactNotes String Details
Custom CRM notes associated with the contact
Order_Contact > DefaultContact String Details
Whether the contact is the relations main (default) contact.

Request Example

The response will be the just created order. All the parameters available with the AddOrder request will be returned. In addition, the parameters below will be returned (if applicable):

Parameters

OrderTotalInclTax Float More info
The order total value, including taxes and optional discounts.
OrderNumber Integer More info
The automatically determined ordernumber
Order_Address Array More info
A JSON array of order addresses. At the moment this will never contain more then one address, which is the address selected for the order.
Order_Address > Address_CountryCode String More info
ISO 3166 (A2) country code of the order address
Order_Address > Address_PostalCode String More info
Postal / zip code
Order_Address > Address_Street String More info
Order_Address > Address_Unit String More info
Order_Address > Address_City String More info
Order_Address > Address_UnitAppendix String More info
Appendix (e.g. appartment/suite/floor) for the address unit
Order_Address > Address_Type String More info
Will either return 'BillingAddress' or 'ShippingAddress'. The 'BillingAddress' is the main address attached to the order. The 'ShippingAddress' is the packing slip address.
Order_Contact Array More info
A JSON array of order contacts. At the moment this will contain the main order contact and the packingslip contact (if applicable).
Order_Contact > ContactType String More info
Order|PackingSlip
Order_Contact > FirstName String More info
Order_Contact > Phone String More info
Order_Contact > Email String More info
Order_Contact > Sex String More info
Contact sex (Man|Vrouw)
Order_Contact > LastName String More info
Order_Contact > ContactNotes String More info
Custom CRM notes associated with the contact
Order_Contact > DefaultContact Boolean (true|false) More info
Whether the contact is the relations main (default) contact.
Order_Orderline Array More info
See the request parameters for all possible response parameters. In addition see parameters below.
Order_Orderline > SubTotalExclTaxExclDiscount String More info
The invoiceline total, excluding tax, excluding discounts
Order_Orderline > SubTotalInclTaxExclDiscount String More info
The invoiceline total, including tax, excluding discounts
Order_Orderline > SubTotalExclTax String More info
The invoiceline total, excluding tax, including discounts on invoice level and line level
CreatedOn Long More info
An UNIX timestamp in seconds reflecting the date and time of creation.
ChangedOn Long More info
An UNIX timestamp in seconds reflecting the date and time of last change.
OrderStatus String More info
The label / name of the current order status
Order_SalesPerson Array More info
An array containing the salesperson.
Order_SalesPerson > FirstName String More info
Order_SalesPerson > LastName String More info
Order_SalesPerson > Prefix String More info
TemplateName_Order String More info
The template name to be used to generate the PDF order.
TemplateName_Email String More info
The template name to be used to generate the e-mail contents.
TemplateName_PackingSlip String More info
The template name to be used to generate the PDF packingslip.
TemplateName_Email_PackingSlip String More info
The template name to be used to generate the e-mail contents.

Response JSON Example

The response order can vary from the parameter order above
    • PUT rest/updateorder/

      • Update a sales order

This PUT method allows you to update a few properties on existing orders in your Silvasoft administration.

Notes:

  • If multiple orders are found for the given ordernumber, no order will be updated.
  • If an orderstatus is submitted, but the status is not present in your Silvasoft administration, the order will not be updated and you will receive an error response.
  • The response to the update action will be the updated order. For a response example and explanation on the response parameters, please see the endpoint ‘AddOrder’ as this will give a similar response.
  • You can omit a parameter to not update the field but maintain the original value.
  • Request
  • Response

Parameters

OrderNumber Long Details
The order number to identify the order to be updated.
OrderNotes String Details
Custom order notes / order description
OrderStatus String Details
Optional orderstatus to be associated with the order. If a status is given but not present in your Silvasoft administration the request will thrown an exception.
OrderReference String Details
Order reference number or text (max. 150 characters)
HtmlAsPlainText Boolean (true|false) Details
Whether the response rich-text fields will be returned as plain text or not. Defaults to false.

Request Example

The response to the update action will be the updated order. For a response example and explanation on the response parameters, please see the endpoint 'AddOrder' as this will give a similar response. 

Parameters


Response JSON Example

The response order can vary from the parameter order above
    • GET rest/listsalesinvoices/

      • Get a list of sales invoices including invoice details

This GET method allows you to retrieve a list of invoices from your administration. You can also retreive the details of a single invoice using the InvoiceNumber request parameter.

Notes:

  • Maximum 100 invoices will be returned per request. If “IncludeInvoiceLinesInResponse” is set to true a maximum of 50 invoices will be returned. If “IncludeBase64PDF” is set to true a maximum of 20 invoices will be returned.
  • You can retrieve more invoices by doing multiple requests and using the offset parameter
  • The returned invoices will be sorted by invoice number (descending)
  • Note that using the parameter “IncludeBase64PDF” can cause significant delay, especially if we need to generate the PDFs during the request.
  • Request
  • Response

Parameters

InvoiceNumber Integer Details
Optional parameter. Use this to retreive the details of a single invoice.
Limit Integer Details
Define an optional limit for the retrieve. Defaults to 100 which is also the maximum. When the parameter "IncludeInvoiceLinesInResponse" is set to true the maximum is 50. When the parameter "IncludeBase64PDF" is set to true the maximum is 15.
Offset Integer Details
Define an optional offset for the retrieve.
InlcudeInvoiceLinesInResponse Boolean (true|false) Details
If set to true (defaults to false) the response will include invoicelines. Please note if this parameter is set to true we will return maximum 50 results!
IncludeBase64PDF Boolean (true|false) Details
If set to true (defaults to false) the response will include a base 64 string which represents the actual PDF invoice. Please note if this parameter is set to true we will return maximum 20 results!
DateFrom Date String (dd-MM-yyyy) Details
The invoice from date filter in format dd-MM-yyyy. (http://docs.oracle.com/javase/6/docs/api/java/text/SimpleDateFormat.html). Default to no from date filter.
DateTill String Details
The invoice till date filter in format dd-MM-yyyy. (http://docs.oracle.com/javase/6/docs/api/java/text/SimpleDateFormat.html). Default to no from date filter.
OutstandingOnly Boolean (true|false) Details
Optional parameter (defaults to false). Use this to retreive only invoices that are not fully paid.

Request Example

Below the parameters you can see an example JSON response, containing 2 sales invoices

Parameters

CustomerNumber Integer More info
The customernumber of the relation associated with this invoice.
CustomerName String More info
The customer name of the relation associated with this invoice.
InvoiceNumber Integer More info
The invoice number
InvoiceNotes String More info
Notes added to the invoice
InvoiceDate String Date (dd-MM-yyyy) More info
The invoice date in format dd-MM-yyyy. (http://docs.oracle.com/javase/6/docs/api/java/text/SimpleDateFormat.html) Defaults to current date.
InvoiceReference String More info
If the invoice is created with the Invoicing module, this will return the (optional) invoice reference
InvoiceTotalExclTax Float More info
The total invoice amount excluding taxes
InvoiceTotalInclTax Float More info
The total invoice amount including taxes
InvoiceTaxAmount Float More info
The total VAT amount
InvoiceOutstandingAmount Float More info
The outstanding amount for this invoice (amount still to be payed)
InvoiceDueDate String Date (dd-MM-yyyy) More info
The invoice due date in format dd-MM-yyyy. (http://docs.oracle.com/javase/6/docs/api/java/text/SimpleDateFormat.html) Defaults to current date.
PackingSlipNotes String More info
Packing slip notes
ProjectName String More info
If the invoice is associated with a project, the project name will be returned
ProjectNumber String More info
If the invoice is associated with a project, the project number will be returned
InvoiceType String More info
This will either return BOOKKEEPING or INVOICING. If BOOKKEEPING is returned then the invoice is created as a bookkeeping sale transaction. If INVOICING is returned then the invoice is created from the invoicing module of the software.
DiscountPc Float More info
The discount % as configured for the invoice
InvoiceIsSent Boolean (true|false) More info
Whether the invoice has been sent. This will return true if the invoice has been sent per e-mail, or if you have marked the invoice as 'sent' in Silvasoft.
OGM_Belgium String More info
A string containing the structured remittance information (OGM). This is only applicable for Belgian Silvasoft customers.
PeriodicInvoiceTemplate Boolean (true|false) More info
Will always be false at the moment because this endpoint will not return periodic/recurring invoices. You can ignore this and other Periodic_.... parameters in the response.
InvoicePDFBase64 String More info
Only available if "IncludeBase64PDF" is set to True in the request. This will return a base 64 string representing the PDF invoice. We will return the last generated/sent PDF. But if the invoice has been changed after the PDF has been created we will generate a new PDF and include it in the response. If we cannot generate a PDF (for example due to template errors) then this field will be empty.
Invoice_Contact Array More info
This contains a JSON array of contacts associated with the invoice. At the moment this will return the main contact of the invoice and the packing slip contact
Invoice_Contact > ContactType String More info
Invoice|PackingSlip
Invoice_Contact > FirstName String More info
Invoice_Contact > Phone String More info
Invoice_Contact > Email String More info
Invoice_Contact > Sex String More info
Contact sex (Man|Vrouw)
Invoice_Contact > LastName String More info
Invoice_Contact > ContactNotes String More info
Invoice_Contact > DefaultContact Boolean (true|false) More info
Invoice_Address String More info
A JSON array of order addresses. This will mostly contain 2 addresses which are the invoice (billing) address and the packing slip (shipping) address.
Invoice_Address > Address_CountryCode String More info
ISO 3166 (A2) country code of the order address
Invoice_Address > Address_PostalCode String More info
Postal / zip code
Invoice_Address > Address_Street String More info
Invoice_Address > Address_Unit String More info
Invoice_Address > Address_City String More info
Invoice_Address > Address_UnitAppendix String More info
Appendix (e.g. appartment/suite/floor) for the address unit
Invoice_Address > AddressType String More info
Will either return 'BillingAddress' or 'ShippingAddress'. The 'ShippingAddress' is the address selected as packing slip address.
Invoice_InvoiceLine String More info
A JSON array of invoicelines. Will only be present if in the request "IncludeInvoiceLinesInResponse" is set to true.
Invoice_InvoiceLine > Description String More info
Invoice line description
Invoice_InvoiceLine > UnitPriceExclTax String More info
Price per ordered unit
Invoice_InvoiceLine > DiscountPc String More info
The discount percentages that has been applied to this invoiceline
Invoice_InvoiceLine > TextLineCategory String More info
In this is a 'TextLine' and the textline is associated to a category this will return the text category
Invoice_InvoiceLine > Quantity String More info
Quantity of units of the product for this invoice line
Invoice_InvoiceLine > ProductNumber String More info
The productnumber of the product associated with the invoice line
Invoice_InvoiceLine > SubTotalInclTaxExclDiscount String More info
The invoiceline total, including tax, excluding discounts
Invoice_InvoiceLine > SubTotalInclTax String More info
The invoiceline total, including tax and discounts on invoice level and line level
Invoice_InvoiceLine > SubTotalExclTax String More info
The invoiceline total, excluding tax, including discounts on invoice level and line level
Invoice_InvoiceLine > ProductEAN String More info
The product EAN code of the product associated with the invoice line.
Invoice_InvoiceLine > LedgerAccountNumber String More info
If the invoiceline is associated with a specific ledger account this field will show the ledger account number
Invoice_InvoiceLine > TaxPc String More info
Numeric representation of the tax % applied for this invoice line
Invoice_InvoiceLine > TaxCode String More info
The tax code applied to this invoice line
Invoice_InvoiceLine > CostCenter String More info
The Cost Center for the invoiceline (Dutch: Kostenplaats)
Invoice_InvoiceLine > IsTextLine String More info
Whether the invoice line is a textline or not
Invoice_InvoiceLine > DeliveryDate String Date (dd-MM-yyyy) More info
Delivery date as specified on the invoice line
Invoice_InvoiceLine > Warehouse String More info
If the invoice line is associated to a warehouse this will show the warehouse name
Invoice_InvoiceLine > Shelf String More info
If the invoice line is associated to a (warehouse) shelf this will show the shelf name
Invoice_InvoiceLine > Batch String More info
If the invoice line is associated to a batch this will show the batch name / number
Invoice_InvoiceLine > ProductCategory String More info
The product category from the selected product on the invoiceline

Response JSON Example

The response order can vary from the parameter order above
    • POST rest/addsalestransaction/

      • Add a sales transaction

This POST method allows you to create a new sales invoice within the ‘Boekhouding’ (bookkeeping) module of our software.

Notes:

  • Maximum 75 invoice lines per invoice allowed.
  • If CustomerNumber is used to identify the customer, the parameters CustomerName and CustomerEmail will be ignored.
  • If CustomerName or CustomerEmail is used to identify the customer, and you have multiple customers that match, we will use the first found match.
  • The parameters CustomerName and CustomerEmail can also be used combined. When both parameters are submitted, the system will search for relations where both name and e-mail match with the submitted parameters.
  • You must add at least one invoice line.
  • Request
  • Response

Parameters

CustomerNumber ** Integer Details
The customer, identified by its customer number, to be associated with the invoice
CustomerName ** String Details
The customer, identified by its name, to be associated with the invoice
CustomerEmail ** String Details
The customer, identified by its e-mailaddress, to be associated with the invoice
InvoiceDate Date String (dd-MM-yyyy) Details
The invoice date in format dd-MM-yyyy. (http://docs.oracle.com/javase/6/docs/api/java/text/SimpleDateFormat.html) Defaults to current date.
InvoiceNumber Long Details
An optional invoice number. Please note this number MUST be unique.
InvoiceNotes String Details
The invoice description
InvoiceFileUrl String Details
A file URL containing the file to be attached to the invoice. The file will be downloaded and added as attachment to the invoice. If the file is not downloadable, the invoice will still be created but without attachment. The file URL must end with one of the following file extensions in order for it to be added to the invoice: .jpg, .png, .pdf, .doc, .docx, .gif
InvoiceProject String Details
The project by either projectnumber or project name to be associated with the invoide
SelectProjectBy String Details
Allowed values: NAME or NUMBER. Determines wether the value in the parameter 'InvoiceProject' is the projectname or projectnumber.
Invoice_InvoiceLine * Array Details
An JSON array of invoice lines. At least one record must be present.
Invoice_InvoiceLine > TaxPc ** Float Details
Numeric representation of the tax % to be applied for this invoice line. Please note that this percentage must be available within your Silvasoft administration.
Invoice_InvoiceLine > TaxCode ** String Details
The tax code to apply to this invoice line. For example if you have multiple tax codes with the same percentage, you can identify a specific tax code with this parameter.
Invoice_InvoiceLine > SubTotalInclTax * Float Details
The invoice line subtotal, including taxes. We will automatically calculate the totals excluding taxes based on the given tax percentage.
Invoice_InvoiceLine > Description String Details
Invoiceline description
Invoice_InvoiceLine > CostCenter String Details
The Cost Center for the invoiceline (Dutch: Kostenplaats). If the Cost Center does not exist in your administration, a new one will be created.
Invoice_InvoiceLine > LedgerAccountNumber String Details
The ledger accountnumber (Dutch: Grootboekrekeningnummer) to be associated with the invoiceline. The ledger account must be present in your administration.

Request Example

The response will a JSON array containing 1 record (the just created invoice). For information on the response parameters we refer to the endpoint 'ListSalesInvoices' since that will give exactly the same response. Or see below for a quick example reference.

Parameters


Response JSON Example

The response order can vary from the parameter order above
    • GET rest/listpurchasetransactions/

      • Get a list of purchase transactions (invoices) including invoice details

This GET method allows you to retrieve a list of purchase transactions (invoices) from your administration. You can also retreive the details of a single purchase using the InvoiceNumber request parameter.

Notes:

  • Maximum 100 invoices will be returned per request
  • You can retrieve more invoices by doing multiple requests and using the offset parameter
  • The returned invoices will be sorted by date (descending)
  • Request
  • Response

Parameters

InvoiceNumber Integer Details
Optional parameter. Use this to retreive the details of a single purchase transaction.
Limit Integer Details
Define an optional limit for the retrieve. Defaults to 100 which is also the maximum.
Offset Integer Details
Define an optional offset for the retrieve.
DateFrom Date String (dd-MM-yyyy) Details
The invoice from date filter in format dd-MM-yyyy. (http://docs.oracle.com/javase/6/docs/api/java/text/SimpleDateFormat.html). Default to no from date filter.
DateTill Date String (dd-MM-yyyy) Details
The invoice till date filter in format dd-MM-yyyy. (http://docs.oracle.com/javase/6/docs/api/java/text/SimpleDateFormat.html). Default to no from date filter.

Request Example

Below the parameters you can see an example JSON response, containing 2 sales invoices

Parameters

SupplierNumber Integer More info
The suppliernumber of the relation associated with this invoice.
SupplierName String More info
The suppliername of the relation associated with this invoice.
InvoiceNumberSilvasoft Integer More info
The internal invoice number (booking number). This is an incremental autonumber.
InvoiceNumber String More info
The supplier invoice number. This is a free-format number (can be a string as well).
InvoiceNotes String More info
Notes added to the invoice
InvoiceDate String Date (dd-MM-yyyy) More info
The invoice date in format dd-MM-yyyy. (http://docs.oracle.com/javase/6/docs/api/java/text/SimpleDateFormat.html) Defaults to current date.
InvoiceTotalExclTax Float More info
The total invoice amount excluding taxes
InvoiceTotalInclTax Float More info
The total invoice amount including taxes
InvoiceTaxAmount Float More info
The total VAT amount
InvoiceOutstandingAmount Float More info
The outstanding amount for this purchase transaction (amount still to be payed)
InvoiceDueDate String Date (dd-MM-yyyy) More info
The invoice due date in format dd-MM-yyyy. (http://docs.oracle.com/javase/6/docs/api/java/text/SimpleDateFormat.html) Defaults to current date.
ProjectName String More info
If the invoice is associated with a project, the project name will be returned
ProjectNumber String More info
If the invoice is associated with a project, the project number will be returned
PurchaseInvoice_Contact Array More info
This contains a JSON array of contacts associated with the supplier. At the moment this will return only the main contact of the supplier.
PurchaseInvoice_Contact > ContactType String More info
Will always return "Invoice"
PurchaseInvoice_Contact > FirstName String More info
PurchaseInvoice_Contact > Phone String More info
PurchaseInvoice_Contact > Email String More info
PurchaseInvoice_Contact > Sex String More info
Contact sex (Man|Vrouw)
PurchaseInvoice_Contact > LastName String More info
PurchaseInvoice_Contact > ContactNotes String More info
PurchaseInvoice_Contact > DefaultContact Boolean (true|false) More info
PurchaseInvoice_Address String More info
A JSON array of customer addresses. At the moment this will never contain more then one address, which is the default address for the supplier.
PurchaseInvoice_Address > Address_CountryCode String More info
ISO 3166 (A2) country code of the order address
PurchaseInvoice_Address > Address_PostalCode String More info
Postal / zip code
PurchaseInvoice_Address > Address_Street String More info
PurchaseInvoice_Address > Address_Unit String More info
PurchaseInvoice_Address > Address_City String More info
PurchaseInvoice_Address > Address_UnitAppendix String More info
Appendix (e.g. appartment/suite/floor) for the address unit
PurchaseInvoice_Address > AddressType String More info
At the moment this will always return "InvoiceAddress"

Response JSON Example

The response order can vary from the parameter order above
    • POST rest/addpurchasetransaction/

      • Add a purchase transaction

This POST method allows you to create a new purchase invoice within the ‘Boekhouding’ (bookkeeping) module of our software.

Notes:

  • Maximum 75 invoice lines per invoice allowed.
  • If CustomerNumber is used to identify the customer, the parameters CustomerName and CustomerEmail will be ignored.
  • If CustomerName or CustomerEmail is used to identify the customer, and you have multiple customers that match, we will use the first found match.
  • The parameters CustomerName and CustomerEmail can also be used combined. When both parameters are submitted, the system will search for relations where both name and e-mail match with the submitted parameters.
  • You must add at least one invoice line.
  • Request
  • Response

Parameters

SupplierNumber ** Integer Details
The customer, identified by its customer number, to be associated with the invoice
SupplierName ** String Details
The customer, identified by its name, to be associated with the invoice
SupplierEmail ** String Details
The customer, identified by its e-mailaddress, to be associated with the invoice
InvoiceDate Date String (dd-MM-yyyy) Details
The invoice date in format dd-MM-yyyy. (http://docs.oracle.com/javase/6/docs/api/java/text/SimpleDateFormat.html) Defaults to current date.
InvoiceDueDate Date String (dd-MM-yyyy) Details
The invoice due date in format dd-MM-yyyy. (http://docs.oracle.com/javase/6/docs/api/java/text/SimpleDateFormat.html) Defaults to current date.
PurchaseInvoiceNumber Long Details
An optional purchase invoice number.
InvoiceNotes String Details
The invoice description
InvoiceFileUrl String Details
A file URL containing the file to be attached to the invoice. The file will be downloaded and added as attachment to the invoice. If the file is not downloadable, the invoice will still be created but without attachment. The file URL must end with one of the following file extensions in order for it to be added to the invoice: .jpg, .png, .pdf, .doc, .docx, .gif
InvoiceProject String Details
The project by either projectnumber or project name to be associated with the invoide
AddAsDraft Boolean (true|false) Details
Defaults to false. If set to true, the purchasetransaction will we added as a draft ('concept' purchasetransaction)
SelectProjectBy String Details
Allowed values: NAME or NUMBER. Determines wether the value in the parameter 'InvoiceProject' is the projectname or projectnumber.
Invoice_InvoiceLine * Array Details
An JSON array of invoice lines. At least one record must be present.
Invoice_InvoiceLine > TaxPc ** Float Details
Numeric representation of the tax % to be applied for this invoice line. Please note that this percentage must be available within your Silvasoft administration.
Invoice_InvoiceLine > TaxCode ** String Details
The tax code to apply to this invoice line. For example if you have multiple tax codes with the same percentage, you can identify a specific tax code with this parameter.
Invoice_InvoiceLine > SubTotalInclTax * Float Details
The invoice line subtotal, including taxes. We will automatically calculate the totals excluding taxes based on the given tax percentage.
Invoice_InvoiceLine > Description String Details
Invoiceline description
Invoice_InvoiceLine > CostCenter String Details
The Cost Center for the invoiceline (Dutch: Kostenplaats). If the Cost Center does not exist in your administration, a new one will be created.
Invoice_InvoiceLine > LedgerAccountNumber String Details
The ledger accountnumber (Dutch: Grootboekrekeningnummer) to be associated with the invoiceline. The ledger account must be present in your administration.
Invoice_InvoiceLine > PurchaseClassification String Details
Belgium administrations only: a purchase classification for the invoiceline. Can be either 81, 82 or 83.

Request Example

The response will a JSON array containing 1 record (the just created purchase transaction). For information on the response parameters we refer to the endpoint 'ListPurchaseInvoices' since that will give exactly the same response. Or see below for a quick example reference.

Parameters


Response JSON Example

The response order can vary from the parameter order above
    • GET rest/listtaxcodes/

      • Get a list of tax codes from the user's administration

This GET method allows you to retrieve a list of tax codes as configured in the user’s administration.

  • Request
  • Response

Parameters


Request Example

Below the parameters you can see an example JSON response, containing a few tax codes

Parameters

TaxExempt Boolean (true|false) More info
Whether the tax booked on this tax code is exempt or not
TaxPc Float More info
The tax percentages as a number (example: 9.00 or 21.00)
TaxCode String More info
The tax code which is a combination of the tax name and the tax percentages. The tax code is used in other API endpoints as well to idenitfy a tax item.
Name String More info
A user-given name for this tax code
TaxType String More info
Either 'Purchase' or 'Sales'. Please note tax codes of type 'Purchase' can only be used for purchase endpoints (purchasetransactions). Tax codes of type 'Sales' can only be used with sales endpoints (salesinvoice, salestransaction, orders)

Response JSON Example

The response order can vary from the parameter order above
    • GET rest/listledgeraccounts/

      • Get a list of ledgeraccounts from the user's administration

This GET method allows you to retrieve a list of ledgeraccounts (Dutch: grootboekrekeningen) from the user’s administration.

  • Request
  • Response

Parameters

FiscalYear Integer Details
Optional parameter to filter on fiscal year. If omitted we will return the ledgeraccounts for the latest fiscal year.
LedgerType String Details
Optional parameter to filter on ledgeraccounts. Possible values: BalanceSheet, IncomeStatement.

Request Example

Below the parameters you can see an example JSON response, containing a few ledgeraccounts

Parameters

Number String More info
Ledgeraccount number
Name String More info
Ledgeraccount name
FiscalYear Boolean (true|false) More info
The fiscal year this ledgeraccount belongs to
LedgerType Float More info
Possible values: BalanceSheet and IncomeStatement
Countrycode String More info
Either NL or BE depending on the country of the users administration
DebetOrCredit String More info
For balance ledgeraccounts: debet = assets, credit = liabilities. For income statement ledger accounts: debet = costs, credit = revenue

Response JSON Example

The response order can vary from the parameter order above
    • POST rest/addsalesinvoice/

      • Add a sales invoice

This POST method allows you to create a new sales invoice and automatically mutate the invoiced products stock levels based on the invoice line quantities. This method will create an invoice within the ‘Facturatie’ (Invoicing) module of our software.

Notes:

  • Maximum 75 invoice lines per invoice allowed.
  • If CustomerNumber is used to identify the customer, the parameters CustomerName and CustomerEmail will be ignored.
  • If CustomerName or CustomerEmail is used to identify the customer, and you have multiple customers that match, we will use the first found match.
  • The parameters CustomerName and CustomerEmail can also be used combined. When both parameters are submitted, the system will search for relations where both name and e-mail match with the submitted parameters.
  • You are required to add at least one invoice line. The invoice line must either contain the parameter ‘ProductNumber‘ or ‘ProductEAN‘. The value entered in either of those fields must refer to an existing product in your Silvasoft administration.
  • A stock mutation for the selected product will be automatically created.
  • Submitting an address is optional, if no address is submitted the default address for the relation will be used. When an address is submitted we will add the address to the relation file (CRM), if the address does not already exist. You can submit both a billing and shipping address using the ‘Address_Type’ field.
  • When submitting attachments you can either submit it by URL (Silvasoft will download the file from the URL) or as a binary string in the field ‘FileContent’. In both cases the file will be mime checked and it cannot be greater than 10mb. When using ‘FileContent’ you must supply a name as well.
  • Request
  • Response

Parameters

CustomerNumber ** Integer Details
The customer, identified by its customer number, to be associated with the invoice
CustomerName ** String Details
The customer, identified by its name, to be associated with the invoice
CustomerEmail ** String Details
The customer, identified by its e-mailaddress, to be associated with the invoice
AddAsDraft Boolean (true|false) Details
Defaults to false. If set to true, the invoice will we added as a draft ('concept' invoice)
InvoiceDate Date String (dd-MM-yyyy) Details
The invoice date in format dd-MM-yyyy. (http://docs.oracle.com/javase/6/docs/api/java/text/SimpleDateFormat.html) Defaults to current date.
InvoiceNumber Long Details
An optional invoice number. Please note this number MUST be unique.
InvoiceNotes String Details
The invoice description
InvoiceDiscountPc Float Details
Discount % to be applied to the invoice. This will always be deducted from the total, even if you submit "SubTotalInclTax" for your invoice lines.
InvoiceReference String Details
Invoice reference number or text (max. 150 characters)
InvoiceDueDays Integer Details
In how much days must the invoice be payed? Leave empty or set to 0 to ignore.
InvoiceDueDate Date String (dd-MM-yyyy) Details
The due date for this invoice. Will be ignored and automatically calculated if InvoiceDueDays is set.
PackingSlipNotes String Details
Extra notes for the packing slip
InvoiceProject String Details
The project by either projectnumber or project name to be associated with the invoide
SelectProjectBy String Details
Allowed values: NAME or NUMBER. Determines wether the value in the parameter 'InvoiceProject' is the projectname or projectnumber.
OGM_Belgium String Details
A string containing the structured remittance information (OGM). This is only applicable for Belgian Silvasoft customers. Leave this empty if you want Silvasoft to generate the OGM (the generated OGM will be available in the response).
TemplateName_Invoice String Details
The template name to be used to generate the PDF invoice. If empty or not found the system will fall back to the default template or the template configured for the relation. To empty the template, use the quote "EMPTY".
TemplateName_Email String Details
The template name to be used to generate the e-mail contents. If empty or not found the system will fall back to the default template or the template configured for the relation. To empty the template, use the quote "EMPTY".
InvoiceForOrderNumber Long Details
If you want to associate this invoice to an order and also change the status of the order to "invoiced" then you can submit the ordernumber here. This setting will only work if a sales order is found belonging to the same relation als this invoice and with the number submitted here.
EmailToCustomer Boolean (true|false) Details
Whether you want to sent the generated invoice to the customer per e-mail. Defaults to false. E-mailing is done in background and there can be an delay of approx. 30 minutes before the mail is sent after the invoice is created.
HtmlAsPlainText Boolean (true|false) Details
Whether the response rich-text fields (notes and packing slip notes) will be returned as plain text or not. Defaults to false.
PeriodicInvoiceTemplate Boolean (true|false) Details
Defaults to false. Whether this invoice is a recurring/periodic invoice. If set to true please also submit at least the parameters "Periodic_StartingDate, Periodic_Frequency, Periodic_FrequencyUnit". Periodic / recurring invoices can be found in Silvasoft under the menu: Facturatie > Periodieke facturatie.
Periodic_StartingDate Date String (dd-MM-yyyy) Details
The start date for this recurring invoice template. If set to today, Silvasoft will directly create an invoice.
Periodic_EndDate Date String (dd-MM-yyyy) Details
The end date for this recurring invoice template.
Periodic_AutomaticMailing Boolean (true|false) Details
Do you want to e-mail created invoices automatically? If set to false Silvasoft will create the periodic invoice but not e-mail it to your customer.
Periodic_Frequency Integer Details
Every how many days,weeks,months,years do you want an invoice to be created?
Periodic_FrequencyUnit String Details
Choose from: Day,Week,Month,Year
Periodic_ChangeDateTokensValue Integer Details
The amount of months to change the date tokens with. For example: set to 1 to increase or decrease (depending on "Periodic_ChangeDateTokensBeforeAfter") the dates shown in the description of the final invoice with 1 month.
Periodic_ChangeDateTokensBeforeAfter String Details
Choose from: Before, After
Periodic_SkipWeekends Boolean (true|false) Details
Set to true if you don't want this template to generate invoices on weekend days.
Invoice_InvoiceLine * Array Details
A JSON array of invoice lines. At least one record must be present.
Invoice_InvoiceLine > ProductNumber ** String Details
The productnumber of the product to be associated with the invoice line.
Invoice_InvoiceLine > ProductEAN ** String Details
The product EAN code of the product to be associated with the invoice line.
Invoice_InvoiceLine > Quantity * Float Details
Quantity of units of the product for this invoice line
Invoice_InvoiceLine > UnitPriceExclTax Float Details
Price per ordered unit
Invoice_InvoiceLine > TaxPc Float Details
Numeric representation of the tax % to be applied for this invoice line. Please note that this percentage must be available within your Silvasoft administration. If no tax details are submitted Silvasoft will use the tax percentage as configured for the product.
Invoice_InvoiceLine > TaxCode String Details
The tax code to apply to this invoice line. For example if you have multiple tax codes with the same percentage, you can identify a specific tax code with this parameter. If no tax details are submitted Silvasoft will use the tax percentage as configured for the product.
Invoice_InvoiceLine > SubTotalInclTax Float Details
The invocie line subtotal, including taxes. When this parameter is set, the price per unit will be ignored and automatically calculated. If this parameter is not submitted then the subtotal will be the "Quantity" times "UnitPriceExclTax" times tax. Please note that this field behaves as a line total, including taxes, including line discount, excluding invoice discount. So this price will never change, except when an invoice discount is submitted ("InvoiceDiscountPc").
Invoice_InvoiceLine > Description String Details
Invoice line description
Invoice_InvoiceLine > CostCenter String Details
The Cost Center for the invoiceline (Dutch: Kostenplaats). If the Cost Center does not exist in your administration, a new one will be created.
Invoice_InvoiceLine > IsTextLine Boolean (true|false) Details
If this is a text line you can set this to true and omit price and tax fields
Invoice_InvoiceLine > TextLineCategory String Details
Optionally submit the name of the text category. If nothing is submitted the default text category will be used.
Invoice_InvoiceLine > LedgerAccountNumber String Details
The ledger accountnumber (Dutch: Grootboekrekeningnummer) to be associated with the invoiceline. The ledger account must be present in your administration.
Invoice_InvoiceLine > DiscountPc String Details
Invoiceline discount %. Please note that the behaviour of line discount depends on how your submit your line total. If you submit the "SubTotalInclTax" then the discount will be added, but not change the line total since the "SubTotalInclTax" behaves as a subtotal, AFTER discount. However, if you submit only a "Quantity" and a "UnitPriceExclTax" then the discount will be applied to the subtotal of "Quantity" times "UnitPriceExclTax" since this combination behaves as a total price BEFORE discount.
Invoice_InvoiceLine > DiscountAmountInclTax String Details
Invoiceline discount amount in EUR. Please note that the behaviour of line discount depends on how your submit your line total. If you submit the "SubTotalInclTax" then the discount will be added, but not change the line total since the "SubTotalInclTax" behaves as a subtotal, AFTER discount. However, if you submit only a "Quantity" and a "UnitPriceExclTax" then the discount will be applied to the subtotal of "Quantity" times "UnitPriceExclTax" since this combination behaves as a total price BEFORE discount.
Invoice_InvoiceLine > UseArticlePrice Boolean (true|false) Details
If set to true (default is false) you will not need to supply any price details for this line. Silvasoft will get the default product price and discount rules for the article or article category, as configured within your administration.
Invoice_Address Array Details
A JSON array of addresses. If no address is submitted the default address for the relation will be used.
Invoice_Address > Address_City String Details
The address (city) to be used for the invoice. If the address does not already exist it will be added as a new address to the customer (CRM).
Invoice_Address > Address_Street String Details
The address (street) to be used for the invoice. If the address does not already exist it will be added as a new address to the customer (CRM).
Invoice_Address > Address_PostalCode String Details
The address (postalcode) to be used for the invoice. If the address does not already exist it will be added as a new address to the customer (CRM).
Invoice_Address > Address_CountryCode String Details
The address (ISO 3166 (A2) countrycode) to be used for the invoice. If the address does not already exist it will be added as a new address to the customer (CRM).
Invoice_Address > Address_Unit String Details
The address (unit) to be used for the invoice. If the address does not already exist it will be added as a new address to the customer (CRM).
Invoice_Address > Address_UnitAppendix String Details
The address (unit appendix) to be used for the invoice. If the address does not already exist it will be added as a new address to the customer (CRM).
Invoice_Address > Address_Type String Details
Allowed values: ShippingAddress and BillingAddress. Shipping_Address will be used for the packing slip. If no ShippingAddress is submitted the billing address will be used for the packing slip.
Invoice_Attachment Array Details
An array of attachments to add to this invoice.
Invoice_Attachment > FileUrl String Details
Method 1: Add an attachment by using a URL pointing to the file to be attached to the invoice. The file will be downloaded and added as attachment. If the file is not downloadable, the order will still be created but without the attachment. The file URL must end with one of the following file extensions in order for it to be added to the order: .jpg, .png, .pdf, .doc, .docx, .xls, .xlsx
Invoice_Attachment > FileContent String Details
Method 2: Add an attachment as a binary string. When this field is submitted you MUST submit a FileName as well.
Invoice_Attachment > Internal Boolean (true|false) Details
Whether the attachment is 'Internal' (true) or 'Public' (false). Defaults to false.
Invoice_Attachment > FileName String Details
The name of the attachment WITH extension. Required when using 'FileContent'. Optional when using 'FileUrl'. If left empty a name will be auto-generated based on the current timestamp.
Invoice_SalesPerson Array Details
An array containing the salesperson. Only the first person will be used
Invoice_SalesPerson > FirstName String Details
Salesperson's first name
Invoice_SalesPerson > LastName String Details
Salesperson's last name
Invoice_SalesPerson > Prefix String Details
Salesperson's prefix
Invoice_Contact Array Details
A JSON array of order contacts. At the moment this will contain the main order contact and the packingslip contact (if applicable).
Invoice_Contact > ContactType String Details
Invoice|PackingSlip
Invoice_Contact > FirstName String Details
Invoice_Contact > Phone String Details
Invoice_Contact > Email String Details
Invoice_Contact > Sex String Details
Contact sex (Man|Vrouw)
Invoice_Contact > LastName String Details
Invoice_Contact > ContactNotes String Details
Custom CRM notes associated with the contact
Invoice_Contact > DefaultContact String Details
Whether the contact is the relations main (default) contact.

Request Example

The response will a JSON array containing 1 record (the just created invoice). For information on the response parameters we refer to the endpoint 'ListSalesInvoices' since that will give exactly the same response. Or see below for a quick example reference.

Parameters


Response JSON Example

The response order can vary from the parameter order above
    • GET rest/listdayregistrations/

      • Get a list of days and underlying registrations (time trackings)

This GET method allows you to retrieve a list of registrations (time trackings) between a given from and till date.

Notes:

  • Maximum 35 days will be returned per request. Every day can contain multiple registrations.
  • You can use the limit and offset parameters to retreive custom datasets
  • The returned registrations will be sorted by date (descending)
  • Request
  • Response

Parameters

DateFrom Date String (dd-MM-yyyy) Details
From date in format dd-MM-yyyy. Defaults to no from date.
DateTill Date String (dd-MM-yyyy) Details
To date in format dd-MM-yyyy. Defaults to no to date.
Limit Integer Details
Define an optional limit for the retrieve. Defaults to 35 which is also the maximum.
Offset Integer Details
Define an optional offset for the retrieve.
AccountEmail String Details
An optional filter on user e-mail to filter out registrations for certain users.

Request Example

Underneath the parameters you can see an example JSON response, containing a couple registrations

Parameters

Date String More info
The dayregistration date in format dd-MM-yyyy.
Status String More info
The dayregistration status. Can be either To_much, To_little or Complete.
TotalHours Float More info
The total amount of hours registered for this day
OvertimeHours Float More info
The amount of overtime hours for this day
AbsenceHours Float More info
The amount of hours absent for this day
WorkedHours Float More info
The amount of hours worked on this day
AccountEmail String More info
The email of the employee to whom the registrations apply
AccountName String More info
The name of the employee to whom the registrations apply
DayRegistration_Registration Array More info
An array of registrations for this day
Registration > Description String More info
The description that the user entered for this day
Registration > Hours String More info
Registration > Invoiced Boolean (true|false) More info
Whether or not this registration has been invoiced to a client. The manager can mark registrations as invoiced.
Registration > Billable Boolean (true|false) More info
Whether or not the hours on this registrations are billable.
Registration > StartingHour String More info
If full registration is used (with from and to time) this will show the starting hour (24h format)
Registration > EndingHour String More info
If full registration is used (with from and to time) this will show the ending hour (24h format)
Registration > StartingMinute String More info
If full registration is used (with from and to time) this will show the starting minute
Registration > EndingMinute String More info
If full registration is used (with from and to time) this will show the ending minute
Registration > BreaksIncluded Boolean (true|false) More info
Whether breaks are included in the registration
Registration > ProjectName String More info
If the registration is associated with a project, this will show the project name
Registration > ProjectPhase String More info
If the registration is associated with a project phase, this will show the project phase

Response JSON Example

The response order can vary from the parameter order above