cURL
curl --request GET \
--url https://api.maesn.dev/accounting/taxRates \
--header 'X-ACCOUNT-KEY: <x-account-key>' \
--header 'X-API-KEY: <x-api-key>'import requests
url = "https://api.maesn.dev/accounting/taxRates"
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/taxRates', 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/taxRates",
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/taxRates"
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/taxRates")
.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/taxRates")
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
}
},
"data": [
{
"id": "b0450a0a-4164-4b5a-b006-1f3e835c32ff",
"code": "02",
"createdDate": "2021-01-01T00:00:00Z",
"description": "BTW hoog tarief, exclusief",
"name": "21 PERCENT",
"percentage": 21,
"type": "INCLUSIVE",
"updatedDate": "2021-01-01T00:00:00Z",
"usage": "INVOICE"
}
]
}Tax Rates
Get tax rates
GET
/
accounting
/
taxRates
cURL
curl --request GET \
--url https://api.maesn.dev/accounting/taxRates \
--header 'X-ACCOUNT-KEY: <x-account-key>' \
--header 'X-API-KEY: <x-api-key>'import requests
url = "https://api.maesn.dev/accounting/taxRates"
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/taxRates', 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/taxRates",
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/taxRates"
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/taxRates")
.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/taxRates")
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
}
},
"data": [
{
"id": "b0450a0a-4164-4b5a-b006-1f3e835c32ff",
"code": "02",
"createdDate": "2021-01-01T00:00:00Z",
"description": "BTW hoog tarief, exclusief",
"name": "21 PERCENT",
"percentage": 21,
"type": "INCLUSIVE",
"updatedDate": "2021-01-01T00:00:00Z",
"usage": "INVOICE"
}
]
}Field support per integration

bexio
bexio

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
boolean
string
string
string
string

DATEV Unternehmen Online
DATEV Unternehmen Online
If you’re not using the Interactive Authentication Flow, make sure the query parameter
companyId is accurately populated with the appropriate company ID. You can obtain this value by using the GET Companies endpoint available under the Authentication section.enum
Available options:
5, 10, 20, 50, 100number
string
string
number
enum
Available options:
INVOICE, BILL, CASH
DATEV Rechnungswesen
DATEV Rechnungswesen
If you’re not using the Interactive Authentication Flow, make sure the query parameter
companyId is accurately populated with the appropriate company ID. You can obtain this value by using the GET Companies endpoint available under the Authentication section.number
string
string
number
enum
Available options:
INVOICE, BILL, CASH
Dinero
Dinero
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
Supported response fields:
string
string
string
number

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
string
string
string
number
string
Available values:
INCLUSIVE, EXCLUSIVE, ZERO_TAX, NO_TAXIndicates how the tax amount should be calculated in relation to an invoice or bill amount.string
enum
Available options:
INVOICE, BILL, ALL
Moneybird
Moneybird
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
string
string
string
number
string
enum
Available options:
INVOICE, BILL,JOURNAL_ENTRY, ALL
Procountor
Procountor
Query parameters:Supported response fields:
enum
Available options:
5, 10, 20, 50, 100number
boolean
string
Only one of the
code and percentage fields will be provided for each entry.string
number
Only one of the
code and percentage fields will be provided for each entry.enum
Available options:
INVOICE, BILL, ALL
QuickBooks
QuickBooks

Snelstart
Snelstart

Tripletex
Tripletex
Use the Interactive Authentication Flow to connect Tripletex. It works for both token types: with an accountant token, the user picks the client company from a list;
with a regular single-company token, the user’s own company is selected automatically and no list is shown. You can also set companyId directly if you already know the client company id (accountant tokens only).
Tax rates are the Norwegian VAT codes (
vatType) active for the company. For accountant (multi-company) tokens, populate companyId — or use the Interactive Authentication Flow — to target a client company; a regular single-company token can omit it.enum
Available options:
5, 10, 20, 50, 100number
boolean
string
string
string
number
Normalised VAT rate. The sign is dropped (Tripletex returns reverse-charge and import codes as negative), and direct-posting codes — which Tripletex reports as
100, a basis rather than a rate — are returned as null. Use rawData=true for the original Tripletex values.
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
string
string
string
string
number
string
enum
Available options:
INVOICE, BILL
Visma e-conomic
Visma e-conomic
Headers
API key
Example:
"example value"
Account key
Example:
"example value"
Query Parameters
Available options:
5, 10, 20, 50, 100 Last modified on September 11, 2026
Was this page helpful?