cURL
curl --request GET \
--url https://api.maesn.dev/accounting/expenses \
--header 'X-ACCOUNT-KEY: <x-account-key>' \
--header 'X-API-KEY: <x-api-key>'import requests
url = "https://api.maesn.dev/accounting/expenses"
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/expenses', 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/expenses",
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/expenses"
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/expenses")
.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/expenses")
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": "9dea18d2-748e-4bda-9f4c-02b08a9622cd",
"accountCode ": "200",
"accountId ": "6527a18d2-748e-4bda-9f4c-02b08a9622cd",
"accountNumber ": 70000,
"createdDate": "2025-07-15T00:00:00Z",
"currency": "EUR",
"customerId": "8a32de4f-55cc-4962-b000-a2a20662b821",
"description": "Expense_07/25 for business trip",
"documentId": "c77fbedb-1ff3-4fed-8716-4d3e3fc85ccf",
"exchangeRate": "1",
"expenseLines": [
{
"id": "b9dade6b-2b69-42c9-bcd4-841960f6cd9f",
"accountCode": "200",
"accountId": "56dec6c2-b14c-43ea-87bb-cc67b0ba2545",
"accountNumber": 4900,
"createdDate ": "2025-07-15T00:00:00Z",
"currency": "EUR",
"description": "Gasoline for business trip",
"dimensions": [
{
"id": "efa82f42-fd85-11e1-a21f-0800200c9a33",
"categoryName": "CostCenter",
"name": "Material/Waren"
}
],
"documentNumber": "EXP-12345",
"exchangeRate": 1,
"itemId": "9fc4f3a2-5b8e-4d1b-8a0c-9f6e7d2f3e4b",
"taxRate": {
"id": "1895b05b-38a6-4a6a-9653-166389894350",
"code": "03",
"name": "Tax19",
"taxRatePercentage": "19"
},
"totalGrossAmount": 119,
"totalNetAmount": 100,
"updatedDate": "2025-07-15T00:00:00Z"
}
],
"files": [
"file1.pdf"
],
"journalCode": "60",
"ledgerName": "Payroll",
"note": "Gasoline for business trip",
"paymentTermId": "d2f3e4b5-6a7b-8c9d-0e1f-2g3h4i5j6k7l",
"paymentType": "CASH",
"supplierId": "52c049b9-91b7-4828-b346-e1eeadfa31dd",
"taskId ": "ADB4457839PXTC2220",
"type": "EXPENSE",
"totalGrossAmount": 119,
"totalNetAmount": 100,
"totalTaxAmount": 19,
"transactionDate": "2025-07-15T00:00:00Z",
"updatedDate": "2025-07-15T00:00:00Z"
}
]
}Expenses
Get expenses
GET
/
accounting
/
expenses
cURL
curl --request GET \
--url https://api.maesn.dev/accounting/expenses \
--header 'X-ACCOUNT-KEY: <x-account-key>' \
--header 'X-API-KEY: <x-api-key>'import requests
url = "https://api.maesn.dev/accounting/expenses"
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/expenses', 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/expenses",
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/expenses"
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/expenses")
.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/expenses")
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": "9dea18d2-748e-4bda-9f4c-02b08a9622cd",
"accountCode ": "200",
"accountId ": "6527a18d2-748e-4bda-9f4c-02b08a9622cd",
"accountNumber ": 70000,
"createdDate": "2025-07-15T00:00:00Z",
"currency": "EUR",
"customerId": "8a32de4f-55cc-4962-b000-a2a20662b821",
"description": "Expense_07/25 for business trip",
"documentId": "c77fbedb-1ff3-4fed-8716-4d3e3fc85ccf",
"exchangeRate": "1",
"expenseLines": [
{
"id": "b9dade6b-2b69-42c9-bcd4-841960f6cd9f",
"accountCode": "200",
"accountId": "56dec6c2-b14c-43ea-87bb-cc67b0ba2545",
"accountNumber": 4900,
"createdDate ": "2025-07-15T00:00:00Z",
"currency": "EUR",
"description": "Gasoline for business trip",
"dimensions": [
{
"id": "efa82f42-fd85-11e1-a21f-0800200c9a33",
"categoryName": "CostCenter",
"name": "Material/Waren"
}
],
"documentNumber": "EXP-12345",
"exchangeRate": 1,
"itemId": "9fc4f3a2-5b8e-4d1b-8a0c-9f6e7d2f3e4b",
"taxRate": {
"id": "1895b05b-38a6-4a6a-9653-166389894350",
"code": "03",
"name": "Tax19",
"taxRatePercentage": "19"
},
"totalGrossAmount": 119,
"totalNetAmount": 100,
"updatedDate": "2025-07-15T00:00:00Z"
}
],
"files": [
"file1.pdf"
],
"journalCode": "60",
"ledgerName": "Payroll",
"note": "Gasoline for business trip",
"paymentTermId": "d2f3e4b5-6a7b-8c9d-0e1f-2g3h4i5j6k7l",
"paymentType": "CASH",
"supplierId": "52c049b9-91b7-4828-b346-e1eeadfa31dd",
"taskId ": "ADB4457839PXTC2220",
"type": "EXPENSE",
"totalGrossAmount": 119,
"totalNetAmount": 100,
"totalTaxAmount": 19,
"transactionDate": "2025-07-15T00:00:00Z",
"updatedDate": "2025-07-15T00:00:00Z"
}
]
}Field support per integration

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
enum
Available options (3-letter ISO 4217):
AED, AFN, ALL, AMD, ANG, AOA, ARS, AUD, AWG, AZN, BAM, BBD, BDT, BGN, BHD, BIF, BMD, BND, BOB, BRL, BSD, BTN, BWP, BYR, BZD, CAD, CDF, CHF, CLP, CNY, COP, CRC, CUC, CVE, CZK, DJF, DKK, DOP, DZD, EEK, EGP, ERN, ETB, EUR, FJD, FKP, GBP, GEL, GHS, GIP, GMD, GNF, GQE, GTQ, GYD, HKD, HNL, HRK, HTG, HUF, IDR, ILS, INR, IQD, IRR, ISK, JMD, JOD, JPY, KES, KGS, KHR, KMF, KPW, KRW, KWD, KYD, KZT, LAK, LBP, LKR, LRD, LSL, LTL, LVL, LYD, MAD, MDL, MGA, MKD, MMK, MNT, MOP, MRO, MUR, MVR, MWK, MXN, MYR, MZM, NAD, NGN, NIO, NOK, NPR, NZD, OMR, PAB, PEN, PGK, PHP, PKR, PLN, PYG, QAR, RON, RSD, RUB, SAR, SBD, SCR, SDG, SEK, SGD, SHP, SLL, SOS, SRD, SYP, SZL, THB, TJS, TMT, TND, TRY, TTD, TWD, TZS, UAH, UGX, USD, UYU, UZS, VEB, VND, VUV, WST, XAF, XCD, XDR, XOF, XPF, YER, ZAR, ZMK, ZWRstring
string
The
documentId is the ID of the document that is attached to the expense.string
JournalLineItem[]
string
string
string
Available options:
CASH, COLLECTION, CREDITstring
string
Available options:
EXPENSEnumber
number
string
string

QuickBooks
QuickBooks
Query parameters:Supported response fields:
enum
Available options:
5, 10, 20, 50, 100number
boolean
string
string
string
enum
Available options (3-letter ISO 4217):
AED, AFN, ALL, AMD, ANG, AOA, ARS, AUD, AWG, AZN, BAM, BBD, BDT, BGN, BHD, BIF, BMD, BND, BOB, BRL, BSD, BTN, BWP, BYR, BZD, CAD, CDF, CHF, CLP, CNY, COP, CRC, CUC, CVE, CZK, DJF, DKK, DOP, DZD, EEK, EGP, ERN, ETB, EUR, FJD, FKP, GBP, GEL, GHS, GIP, GMD, GNF, GQE, GTQ, GYD, HKD, HNL, HRK, HTG, HUF, IDR, ILS, INR, IQD, IRR, ISK, JMD, JOD, JPY, KES, KGS, KHR, KMF, KPW, KRW, KWD, KYD, KZT, LAK, LBP, LKR, LRD, LSL, LTL, LVL, LYD, MAD, MDL, MGA, MKD, MMK, MNT, MOP, MRO, MUR, MVR, MWK, MXN, MYR, MZM, NAD, NGN, NIO, NOK, NPR, NZD, OMR, PAB, PEN, PGK, PHP, PKR, PLN, PYG, QAR, RON, RSD, RUB, SAR, SBD, SCR, SDG, SEK, SGD, SHP, SLL, SOS, SRD, SYP, SZL, THB, TJS, TMT, TND, TRY, TTD, TWD, TZS, UAH, UGX, USD, UYU, UZS, VEB, VND, VUV, WST, XAF, XCD, XDR, XOF, XPF, YER, ZAR, ZMK, ZWRstring
string
Available options:
CASH, CREDIT_CARD, CHECKstring
number
string
string

Xero
Xero
Query parameters:Supported response fields:
enum
Available options:
5, 10, 20, 50, 100number
boolean
string
string
string
string
enum
Available options (3-letter ISO 4217):
AED, AFN, ALL, AMD, ANG, AOA, ARS, AUD, AWG, AZN, BAM, BBD, BDT, BGN, BHD, BIF, BMD, BND, BOB, BRL, BSD, BTN, BWP, BYR, BZD, CAD, CDF, CHF, CLP, CNY, COP, CRC, CUC, CVE, CZK, DJF, DKK, DOP, DZD, EEK, EGP, ERN, ETB, EUR, FJD, FKP, GBP, GEL, GHS, GIP, GMD, GNF, GQE, GTQ, GYD, HKD, HNL, HRK, HTG, HUF, IDR, ILS, INR, IQD, IRR, ISK, JMD, JOD, JPY, KES, KGS, KHR, KMF, KPW, KRW, KWD, KYD, KZT, LAK, LBP, LKR, LRD, LSL, LTL, LVL, LYD, MAD, MDL, MGA, MKD, MMK, MNT, MOP, MRO, MUR, MVR, MWK, MXN, MYR, MZM, NAD, NGN, NIO, NOK, NPR, NZD, OMR, PAB, PEN, PGK, PHP, PKR, PLN, PYG, QAR, RON, RSD, RUB, SAR, SBD, SCR, SDG, SEK, SGD, SHP, SLL, SOS, SRD, SYP, SZL, THB, TJS, TMT, TND, TRY, TTD, TWD, TZS, UAH, UGX, USD, UYU, UZS, VEB, VND, VUV, WST, XAF, XCD, XDR, XOF, XPF, YER, ZAR, ZMK, ZWRstring
string
JournalLineItem[]
string
enum
string
Available options:
EXPENSE, REFUNDnumber
number
number
string
string
Headers
API key
Example:
"example value"
Account key
Example:
"example value"
Query Parameters
Available options:
5, 10, 20, 50, 100 Last modified on July 10, 2026
Was this page helpful?