cURL
curl --request GET \
--url https://api.maesn.dev/accounting/suppliers \
--header 'X-ACCOUNT-KEY: <x-account-key>' \
--header 'X-API-KEY: <x-api-key>'import requests
url = "https://api.maesn.dev/accounting/suppliers"
headers = {
"X-API-KEY": "<x-api-key>",
"X-ACCOUNT-KEY": "<x-account-key>"
}
response = requests.get(url, headers=headers)
print(response.text)const options = {
method: 'GET',
headers: {'X-API-KEY': '<x-api-key>', 'X-ACCOUNT-KEY': '<x-account-key>'}
};
fetch('https://api.maesn.dev/accounting/suppliers', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.maesn.dev/accounting/suppliers",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"X-ACCOUNT-KEY: <x-account-key>",
"X-API-KEY: <x-api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.maesn.dev/accounting/suppliers"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-API-KEY", "<x-api-key>")
req.Header.Add("X-ACCOUNT-KEY", "<x-account-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.maesn.dev/accounting/suppliers")
.header("X-API-KEY", "<x-api-key>")
.header("X-ACCOUNT-KEY", "<x-account-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.maesn.dev/accounting/suppliers")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-API-KEY"] = '<x-api-key>'
request["X-ACCOUNT-KEY"] = '<x-account-key>'
response = http.request(request)
puts response.read_body{
"meta": {
"warnings": [
"Field not used by target system"
],
"pagination": {
"total": 125,
"perPage": 50,
"currentPage": 1,
"totalPages": 3
},
"partialErrors": [
{
"code": "FILE_UPLOAD_FAILED",
"message": "Attachment invoice.pdf could not be uploaded to the target system."
}
]
},
"data": [
{
"id": "92c4f3a2-5b8e-4d1b-8a0c-9f6e7d2f3e4b",
"addresses": [
{
"addressLine1": "Lucky street 1",
"addressLine2": "2nd floor",
"city": "Berlin",
"countryCode": "DE",
"postalCode": "10243",
"type": "BILLING"
}
],
"bankAccounts": [
{
"bic": "COBADEFFXXX",
"holder": "John Doe",
"iban": "DE89370400440532013000",
"sepa": true,
"isMainAccount": true,
"name": "Sparkasse"
}
],
"companyName": "maesn",
"contactType": "CONTACT_PERSON",
"contactPersons": [
{
"emailAddresses": [
{
"email": "john.doe@company.com",
"type": "BUSINESS"
}
],
"firstName": "John",
"lastName": "Doe",
"phoneNumbers": [
{
"number": "+49 7163307056",
"type": "MOBILE"
}
],
"salutation": "Mr"
}
],
"documentId": "Z1248601M",
"emailAddresses": [
{
"email": "john.doe@company.com",
"type": "BUSINESS"
}
],
"number": "1042",
"phoneNumbers": [
{
"number": "+49 7163307056",
"type": "MOBILE"
}
],
"projectId": "3",
"updatedDate": "2018-01-01T13:00:00.000Z",
"vatId": "DE123456789"
}
]
}Suppliers
Get suppliers
GET
/
accounting
/
suppliers
cURL
curl --request GET \
--url https://api.maesn.dev/accounting/suppliers \
--header 'X-ACCOUNT-KEY: <x-account-key>' \
--header 'X-API-KEY: <x-api-key>'import requests
url = "https://api.maesn.dev/accounting/suppliers"
headers = {
"X-API-KEY": "<x-api-key>",
"X-ACCOUNT-KEY": "<x-account-key>"
}
response = requests.get(url, headers=headers)
print(response.text)const options = {
method: 'GET',
headers: {'X-API-KEY': '<x-api-key>', 'X-ACCOUNT-KEY': '<x-account-key>'}
};
fetch('https://api.maesn.dev/accounting/suppliers', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.maesn.dev/accounting/suppliers",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"X-ACCOUNT-KEY: <x-account-key>",
"X-API-KEY: <x-api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.maesn.dev/accounting/suppliers"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-API-KEY", "<x-api-key>")
req.Header.Add("X-ACCOUNT-KEY", "<x-account-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.maesn.dev/accounting/suppliers")
.header("X-API-KEY", "<x-api-key>")
.header("X-ACCOUNT-KEY", "<x-account-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.maesn.dev/accounting/suppliers")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-API-KEY"] = '<x-api-key>'
request["X-ACCOUNT-KEY"] = '<x-account-key>'
response = http.request(request)
puts response.read_body{
"meta": {
"warnings": [
"Field not used by target system"
],
"pagination": {
"total": 125,
"perPage": 50,
"currentPage": 1,
"totalPages": 3
},
"partialErrors": [
{
"code": "FILE_UPLOAD_FAILED",
"message": "Attachment invoice.pdf could not be uploaded to the target system."
}
]
},
"data": [
{
"id": "92c4f3a2-5b8e-4d1b-8a0c-9f6e7d2f3e4b",
"addresses": [
{
"addressLine1": "Lucky street 1",
"addressLine2": "2nd floor",
"city": "Berlin",
"countryCode": "DE",
"postalCode": "10243",
"type": "BILLING"
}
],
"bankAccounts": [
{
"bic": "COBADEFFXXX",
"holder": "John Doe",
"iban": "DE89370400440532013000",
"sepa": true,
"isMainAccount": true,
"name": "Sparkasse"
}
],
"companyName": "maesn",
"contactType": "CONTACT_PERSON",
"contactPersons": [
{
"emailAddresses": [
{
"email": "john.doe@company.com",
"type": "BUSINESS"
}
],
"firstName": "John",
"lastName": "Doe",
"phoneNumbers": [
{
"number": "+49 7163307056",
"type": "MOBILE"
}
],
"salutation": "Mr"
}
],
"documentId": "Z1248601M",
"emailAddresses": [
{
"email": "john.doe@company.com",
"type": "BUSINESS"
}
],
"number": "1042",
"phoneNumbers": [
{
"number": "+49 7163307056",
"type": "MOBILE"
}
],
"projectId": "3",
"updatedDate": "2018-01-01T13:00:00.000Z",
"vatId": "DE123456789"
}
]
}Field support per integration

BuchhaltungsButler
BuchhaltungsButler
Query parameters:Supported response fields:
enum
Available options:
5, 10, 20, 50, 100number
boolean
string
enum
Available options:
COMPANYstring
Address[]
string

Business Central
Business Central
If you’re not using the Interactive Authentication Flow, make sure the query parameters
environmentName and companyId are correctly populated.
You can obtain these values by using the GET Environments and GET Companies endpoints available under the Authentication section.enum
Available options:
5, 10, 20, 50, 100number
string
boolean
string
enum
Available options:
CONTACT_PERSON, COMPANYstring
ContactPerson[]
Address[]
BankAccount[]
string
string

Exact Online
Exact Online
If you’re not using the Interactive Authentication Flow, make sure the query parameter
companyId is correctly populated.
You can obtain this value by using the GET Companies endpoint available under the Authentication section.enum
Available options:
5, 10, 20, 50, 100number
boolean
string
enum
Available options:
CONTACT_PERSON, COMPANYstring
ContactPerson[]
Address[]
string
string
string

fortnox
fortnox
Query parameters:Supported response fields:
enum
Available options:
5, 10, 20, 50, 100number
boolean
string
enum
Available options:
COMPANYstring
Address[]
string
string

FreeAgent
FreeAgent
Query parameters:Supported response fields:
enum
Available options:
5, 10, 20, 50, 100number
boolean
string
enum
Available options:
CONTACT_PERSON, COMPANYstring
ContactPerson[]
Address[]

FreshBooks
FreshBooks
Ensure that the query parameter
_companyId_ is correctly filled with the account ID associated with the contact.
This value can be retrieved by using the GET Companies endpoint in the Authentication section. Use the returned id as the value for _companyId_.enum
Available options:
5, 10, 20, 50, 100number
boolean
string
enum
Available options:
CONTACT_PERSON, COMPANYstring
ContactPerson[]
Address[]

Holded
Holded
Query parameters:Supported response fields:
enum
Available options:
5, 10, 20, 50, 100number
boolean
string
enum
Available options:
CONTACT_PERSON, COMPANYstring
ContactPerson[]
Address[]
string

Lexware Office
Lexware Office
Query parameters:Supported response fields:
enum
Available options:
5, 10, 20, 50, 100number
string
boolean
string
Address[]
string
ContactPerson[]
enum
Available options:
CONTACT_PERSON, COMPANYstring

Pennylane
Pennylane
Query parameters:Supported response fields:
enum
Available options:
5, 10, 20, 50, 100number
boolean
string
Address[]
string
enum
Available options:
COMPANYstring
string

QuickBooks
QuickBooks
Query parameters:Supported response fields:
enum
Available options:
5, 10, 20, 50, 100number
boolean
string
enum
Available options:
CONTACT_PERSON, COMPANYstring
ContactPerson[]
Address[]
string

Sage Accounting
Sage Accounting
This endpoint is available only for the following countries:
Accounting Plus: Canada, United Kingdom, Ireland
Accounting Standard: United Kingdom, Ireland
Accounting Start: Canada, United Kingdom, Ireland
Accounting Standard: United Kingdom, Ireland
Accounting Start: Canada, United Kingdom, Ireland
When handling a new connection in your integration, it is advisable to first determine which subscription your customer is using to ensure compatibility. To do this, you can use the
GET Companies call to retrieve all businesses available for the user. The user will then select one of these businesses.
It is also a good practice to verify that the active property of the selected business is set to true before proceeding with the integration setup.enum
Available options:
5, 10, 20, 50, 100number
boolean
string
enum
Available options:
UNDEFINEDstring
ContactPerson[]

Sage Active
Sage Active
If you’re not using the Interactive Authentication Flow, make sure the query parameter
companyId is correctly populated.
You can obtain this value by using the GET Companies endpoint available under the Authentication section. Please use the id field as the companyId.enum
Available options:
5, 10, 20, 50, 100number
string
boolean
string
enum
Available options:
COMPANYstring
ContactPerson[]
Address[]
string
string

sevdesk
sevdesk
Query parameters:Supported response fields:
enum
Available options:
5, 10, 20, 50, 100number
string
boolean
string
enum
Available options:
CONTACT_PERSON, COMPANYstring
ContactPerson[]
Address[]
string
string

Twinfield
Twinfield
If you’re not using the Interactive Authentication Flow, make sure the query parameter
companyId is correctly populated.
You can obtain this value by using the GET Companies endpoint available under the Authentication section.enum
Available options:
5, 10, 20, 50, 100number
boolean
string
enum
Available options:
COMPANYstring
Address[]
string

Visma e-conomic
Visma e-conomic
Query parameters:Supported response fields:
enum
Available options:
5, 10, 20, 50, 100number
boolean
string
enum
Available options:
COMPANYstring
Address[]
string
string

Visma eAccounting
Visma eAccounting
Query parameters:Supported response fields:
enum
Available options:
5, 10, 20, 50, 100number
boolean
string
enum
Available options:
COMPANYstring
ContactPerson[]
Address[]
string
string

weclapp
weclapp
Query parameters:Supported response fields:
enum
Available options:
5, 10, 20, 50, 100number
boolean
string
enum
Available options:
CONTACT_PERSON, COMPANYstring
ContactPerson[]
Address[]
string

Xentral
Xentral
Query parameters:Supported response fields:
enum
Available options:
5, 10, 20, 50, 100number
boolean
string
enum
Available options:
CONTACT_PERSON, COMPANYstring
ContactPerson[]
Address[]
string

Xero
Xero
Xero allows up to six contact persons per company.
enum
Available options:
5, 10, 20, 50, 100number
boolean
string
enum
Available options:
UNDEFINEDstring
ContactPerson[]
Address[]
string
Query Parameters
Available options:
5, 10, 20, 50, 100 Last modified on November 5, 2026
Was this page helpful?