cURL
curl --request POST \
--url https://api.maesn.dev/accounting/expenses/async \
--header 'Content-Type: multipart/form-data' \
--header 'X-ACCOUNT-KEY: <x-account-key>' \
--header 'X-API-KEY: <x-api-key>' \
--form 'files=<string>' \
--form 'expense={
"account ": {
"id": "db32-4f56-8a9b-1234567890ab",
"code": "200",
"name": "EXPENSE",
"number": 4900
},
"currency": "EUR",
"customerId": "8a32de4f-55cc-4962-b000-a2a20662b821",
"description": "Expense_07/25 for business trip",
"documentId": "c77fbedb-1ff3-4fed-8716-4d3e3fc85ccf",
"expenseLines": [
{
"account ": {
"id": "db32-4f56-8a9b-1234567890ab",
"code": "200",
"name": "EXPENSE",
"number": 4900
},
"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",
"description": "Tax19",
"taxRatePercentage": "19"
},
"totalGrossAmount": 119,
"totalNetAmount": 100
}
],
"generatorName": "Maesn GmbH",
"journalCode": "60",
"note": "Gasoline for business trip",
"paymentTermId": "d2f3e4b5-6a7b-8c9d-0e1f-2g3h4i5j6k7l",
"paymentType": "CASH",
"supplierId": "52c049b9-91b7-4828-b346-e1eeadfa31dd",
"totalGrossAmount": 119,
"totalNetAmount": 100,
"totalTaxAmount": 5,
"transactionDate": "2025-07-15T00:00:00Z"
}' \
--form files.items='@example-file'import requests
url = "https://api.maesn.dev/accounting/expenses/async"
files = { "files.items": ("example-file", open("example-file", "rb")) }
payload = {
"files": "<string>",
"expense": "{
\"account \": {
\"id\": \"db32-4f56-8a9b-1234567890ab\",
\"code\": \"200\",
\"name\": \"EXPENSE\",
\"number\": 4900
},
\"currency\": \"EUR\",
\"customerId\": \"8a32de4f-55cc-4962-b000-a2a20662b821\",
\"description\": \"Expense_07/25 for business trip\",
\"documentId\": \"c77fbedb-1ff3-4fed-8716-4d3e3fc85ccf\",
\"expenseLines\": [
{
\"account \": {
\"id\": \"db32-4f56-8a9b-1234567890ab\",
\"code\": \"200\",
\"name\": \"EXPENSE\",
\"number\": 4900
},
\"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\",
\"description\": \"Tax19\",
\"taxRatePercentage\": \"19\"
},
\"totalGrossAmount\": 119,
\"totalNetAmount\": 100
}
],
\"generatorName\": \"Maesn GmbH\",
\"journalCode\": \"60\",
\"note\": \"Gasoline for business trip\",
\"paymentTermId\": \"d2f3e4b5-6a7b-8c9d-0e1f-2g3h4i5j6k7l\",
\"paymentType\": \"CASH\",
\"supplierId\": \"52c049b9-91b7-4828-b346-e1eeadfa31dd\",
\"totalGrossAmount\": 119,
\"totalNetAmount\": 100,
\"totalTaxAmount\": 5,
\"transactionDate\": \"2025-07-15T00:00:00Z\"
}"
}
headers = {
"X-API-KEY": "<x-api-key>",
"X-ACCOUNT-KEY": "<x-account-key>"
}
response = requests.post(url, data=payload, files=files, headers=headers)
print(response.text)const form = new FormData();
form.append('files', '<string>');
form.append('expense', '{
"account ": {
"id": "db32-4f56-8a9b-1234567890ab",
"code": "200",
"name": "EXPENSE",
"number": 4900
},
"currency": "EUR",
"customerId": "8a32de4f-55cc-4962-b000-a2a20662b821",
"description": "Expense_07/25 for business trip",
"documentId": "c77fbedb-1ff3-4fed-8716-4d3e3fc85ccf",
"expenseLines": [
{
"account ": {
"id": "db32-4f56-8a9b-1234567890ab",
"code": "200",
"name": "EXPENSE",
"number": 4900
},
"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",
"description": "Tax19",
"taxRatePercentage": "19"
},
"totalGrossAmount": 119,
"totalNetAmount": 100
}
],
"generatorName": "Maesn GmbH",
"journalCode": "60",
"note": "Gasoline for business trip",
"paymentTermId": "d2f3e4b5-6a7b-8c9d-0e1f-2g3h4i5j6k7l",
"paymentType": "CASH",
"supplierId": "52c049b9-91b7-4828-b346-e1eeadfa31dd",
"totalGrossAmount": 119,
"totalNetAmount": 100,
"totalTaxAmount": 5,
"transactionDate": "2025-07-15T00:00:00Z"
}');
form.append('files.items', '{
"fileName": "example-file"
}');
const options = {
method: 'POST',
headers: {'X-API-KEY': '<x-api-key>', 'X-ACCOUNT-KEY': '<x-account-key>'}
};
options.body = form;
fetch('https://api.maesn.dev/accounting/expenses/async', 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/async",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"files\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"expense\"\r\n\r\n{\r\n \"account \": {\r\n \"id\": \"db32-4f56-8a9b-1234567890ab\",\r\n \"code\": \"200\",\r\n \"name\": \"EXPENSE\",\r\n \"number\": 4900\r\n },\r\n \"currency\": \"EUR\",\r\n \"customerId\": \"8a32de4f-55cc-4962-b000-a2a20662b821\",\r\n \"description\": \"Expense_07/25 for business trip\",\r\n \"documentId\": \"c77fbedb-1ff3-4fed-8716-4d3e3fc85ccf\",\r\n \"expenseLines\": [\r\n {\r\n \"account \": {\r\n \"id\": \"db32-4f56-8a9b-1234567890ab\",\r\n \"code\": \"200\",\r\n \"name\": \"EXPENSE\",\r\n \"number\": 4900\r\n },\r\n \"currency\": \"EUR\",\r\n \"description\": \"Gasoline for business trip\",\r\n \"dimensions\": [\r\n {\r\n \"id\": \"efa82f42-fd85-11e1-a21f-0800200c9a33\",\r\n \"categoryName\": \"CostCenter\",\r\n \"name\": \"Material/Waren\"\r\n }\r\n ],\r\n \"documentNumber\": \"EXP-12345\",\r\n \"exchangeRate\": 1,\r\n \"itemId\": \"9fc4f3a2-5b8e-4d1b-8a0c-9f6e7d2f3e4b\",\r\n \"taxRate\": {\r\n \"id\": \"1895b05b-38a6-4a6a-9653-166389894350\",\r\n \"code\": \"03\",\r\n \"description\": \"Tax19\",\r\n \"taxRatePercentage\": \"19\"\r\n },\r\n \"totalGrossAmount\": 119,\r\n \"totalNetAmount\": 100\r\n }\r\n ],\r\n \"generatorName\": \"Maesn GmbH\",\r\n \"journalCode\": \"60\",\r\n \"note\": \"Gasoline for business trip\",\r\n \"paymentTermId\": \"d2f3e4b5-6a7b-8c9d-0e1f-2g3h4i5j6k7l\",\r\n \"paymentType\": \"CASH\",\r\n \"supplierId\": \"52c049b9-91b7-4828-b346-e1eeadfa31dd\",\r\n \"totalGrossAmount\": 119,\r\n \"totalNetAmount\": 100,\r\n \"totalTaxAmount\": 5,\r\n \"transactionDate\": \"2025-07-15T00:00:00Z\"\r\n}\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"files.items\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n{\r\n \"fileName\": \"example-file\"\r\n}\r\n-----011000010111000001101001--",
CURLOPT_HTTPHEADER => [
"Content-Type: multipart/form-data",
"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"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.maesn.dev/accounting/expenses/async"
payload := strings.NewReader("-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"files\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"expense\"\r\n\r\n{\r\n \"account \": {\r\n \"id\": \"db32-4f56-8a9b-1234567890ab\",\r\n \"code\": \"200\",\r\n \"name\": \"EXPENSE\",\r\n \"number\": 4900\r\n },\r\n \"currency\": \"EUR\",\r\n \"customerId\": \"8a32de4f-55cc-4962-b000-a2a20662b821\",\r\n \"description\": \"Expense_07/25 for business trip\",\r\n \"documentId\": \"c77fbedb-1ff3-4fed-8716-4d3e3fc85ccf\",\r\n \"expenseLines\": [\r\n {\r\n \"account \": {\r\n \"id\": \"db32-4f56-8a9b-1234567890ab\",\r\n \"code\": \"200\",\r\n \"name\": \"EXPENSE\",\r\n \"number\": 4900\r\n },\r\n \"currency\": \"EUR\",\r\n \"description\": \"Gasoline for business trip\",\r\n \"dimensions\": [\r\n {\r\n \"id\": \"efa82f42-fd85-11e1-a21f-0800200c9a33\",\r\n \"categoryName\": \"CostCenter\",\r\n \"name\": \"Material/Waren\"\r\n }\r\n ],\r\n \"documentNumber\": \"EXP-12345\",\r\n \"exchangeRate\": 1,\r\n \"itemId\": \"9fc4f3a2-5b8e-4d1b-8a0c-9f6e7d2f3e4b\",\r\n \"taxRate\": {\r\n \"id\": \"1895b05b-38a6-4a6a-9653-166389894350\",\r\n \"code\": \"03\",\r\n \"description\": \"Tax19\",\r\n \"taxRatePercentage\": \"19\"\r\n },\r\n \"totalGrossAmount\": 119,\r\n \"totalNetAmount\": 100\r\n }\r\n ],\r\n \"generatorName\": \"Maesn GmbH\",\r\n \"journalCode\": \"60\",\r\n \"note\": \"Gasoline for business trip\",\r\n \"paymentTermId\": \"d2f3e4b5-6a7b-8c9d-0e1f-2g3h4i5j6k7l\",\r\n \"paymentType\": \"CASH\",\r\n \"supplierId\": \"52c049b9-91b7-4828-b346-e1eeadfa31dd\",\r\n \"totalGrossAmount\": 119,\r\n \"totalNetAmount\": 100,\r\n \"totalTaxAmount\": 5,\r\n \"transactionDate\": \"2025-07-15T00:00:00Z\"\r\n}\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"files.items\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n{\r\n \"fileName\": \"example-file\"\r\n}\r\n-----011000010111000001101001--")
req, _ := http.NewRequest("POST", url, payload)
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.post("https://api.maesn.dev/accounting/expenses/async")
.header("X-API-KEY", "<x-api-key>")
.header("X-ACCOUNT-KEY", "<x-account-key>")
.body("-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"files\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"expense\"\r\n\r\n{\r\n \"account \": {\r\n \"id\": \"db32-4f56-8a9b-1234567890ab\",\r\n \"code\": \"200\",\r\n \"name\": \"EXPENSE\",\r\n \"number\": 4900\r\n },\r\n \"currency\": \"EUR\",\r\n \"customerId\": \"8a32de4f-55cc-4962-b000-a2a20662b821\",\r\n \"description\": \"Expense_07/25 for business trip\",\r\n \"documentId\": \"c77fbedb-1ff3-4fed-8716-4d3e3fc85ccf\",\r\n \"expenseLines\": [\r\n {\r\n \"account \": {\r\n \"id\": \"db32-4f56-8a9b-1234567890ab\",\r\n \"code\": \"200\",\r\n \"name\": \"EXPENSE\",\r\n \"number\": 4900\r\n },\r\n \"currency\": \"EUR\",\r\n \"description\": \"Gasoline for business trip\",\r\n \"dimensions\": [\r\n {\r\n \"id\": \"efa82f42-fd85-11e1-a21f-0800200c9a33\",\r\n \"categoryName\": \"CostCenter\",\r\n \"name\": \"Material/Waren\"\r\n }\r\n ],\r\n \"documentNumber\": \"EXP-12345\",\r\n \"exchangeRate\": 1,\r\n \"itemId\": \"9fc4f3a2-5b8e-4d1b-8a0c-9f6e7d2f3e4b\",\r\n \"taxRate\": {\r\n \"id\": \"1895b05b-38a6-4a6a-9653-166389894350\",\r\n \"code\": \"03\",\r\n \"description\": \"Tax19\",\r\n \"taxRatePercentage\": \"19\"\r\n },\r\n \"totalGrossAmount\": 119,\r\n \"totalNetAmount\": 100\r\n }\r\n ],\r\n \"generatorName\": \"Maesn GmbH\",\r\n \"journalCode\": \"60\",\r\n \"note\": \"Gasoline for business trip\",\r\n \"paymentTermId\": \"d2f3e4b5-6a7b-8c9d-0e1f-2g3h4i5j6k7l\",\r\n \"paymentType\": \"CASH\",\r\n \"supplierId\": \"52c049b9-91b7-4828-b346-e1eeadfa31dd\",\r\n \"totalGrossAmount\": 119,\r\n \"totalNetAmount\": 100,\r\n \"totalTaxAmount\": 5,\r\n \"transactionDate\": \"2025-07-15T00:00:00Z\"\r\n}\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"files.items\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n{\r\n \"fileName\": \"example-file\"\r\n}\r\n-----011000010111000001101001--")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.maesn.dev/accounting/expenses/async")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-API-KEY"] = '<x-api-key>'
request["X-ACCOUNT-KEY"] = '<x-account-key>'
request.body = "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"files\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"expense\"\r\n\r\n{\r\n \"account \": {\r\n \"id\": \"db32-4f56-8a9b-1234567890ab\",\r\n \"code\": \"200\",\r\n \"name\": \"EXPENSE\",\r\n \"number\": 4900\r\n },\r\n \"currency\": \"EUR\",\r\n \"customerId\": \"8a32de4f-55cc-4962-b000-a2a20662b821\",\r\n \"description\": \"Expense_07/25 for business trip\",\r\n \"documentId\": \"c77fbedb-1ff3-4fed-8716-4d3e3fc85ccf\",\r\n \"expenseLines\": [\r\n {\r\n \"account \": {\r\n \"id\": \"db32-4f56-8a9b-1234567890ab\",\r\n \"code\": \"200\",\r\n \"name\": \"EXPENSE\",\r\n \"number\": 4900\r\n },\r\n \"currency\": \"EUR\",\r\n \"description\": \"Gasoline for business trip\",\r\n \"dimensions\": [\r\n {\r\n \"id\": \"efa82f42-fd85-11e1-a21f-0800200c9a33\",\r\n \"categoryName\": \"CostCenter\",\r\n \"name\": \"Material/Waren\"\r\n }\r\n ],\r\n \"documentNumber\": \"EXP-12345\",\r\n \"exchangeRate\": 1,\r\n \"itemId\": \"9fc4f3a2-5b8e-4d1b-8a0c-9f6e7d2f3e4b\",\r\n \"taxRate\": {\r\n \"id\": \"1895b05b-38a6-4a6a-9653-166389894350\",\r\n \"code\": \"03\",\r\n \"description\": \"Tax19\",\r\n \"taxRatePercentage\": \"19\"\r\n },\r\n \"totalGrossAmount\": 119,\r\n \"totalNetAmount\": 100\r\n }\r\n ],\r\n \"generatorName\": \"Maesn GmbH\",\r\n \"journalCode\": \"60\",\r\n \"note\": \"Gasoline for business trip\",\r\n \"paymentTermId\": \"d2f3e4b5-6a7b-8c9d-0e1f-2g3h4i5j6k7l\",\r\n \"paymentType\": \"CASH\",\r\n \"supplierId\": \"52c049b9-91b7-4828-b346-e1eeadfa31dd\",\r\n \"totalGrossAmount\": 119,\r\n \"totalNetAmount\": 100,\r\n \"totalTaxAmount\": 5,\r\n \"transactionDate\": \"2025-07-15T00:00:00Z\"\r\n}\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"files.items\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n{\r\n \"fileName\": \"example-file\"\r\n}\r\n-----011000010111000001101001--"
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": {
"taskId": "02cc5849-b23c-48fe-8a9b-96f74bfc9571"
}
}Expenses
Create expense async
POST
/
accounting
/
expenses
/
async
cURL
curl --request POST \
--url https://api.maesn.dev/accounting/expenses/async \
--header 'Content-Type: multipart/form-data' \
--header 'X-ACCOUNT-KEY: <x-account-key>' \
--header 'X-API-KEY: <x-api-key>' \
--form 'files=<string>' \
--form 'expense={
"account ": {
"id": "db32-4f56-8a9b-1234567890ab",
"code": "200",
"name": "EXPENSE",
"number": 4900
},
"currency": "EUR",
"customerId": "8a32de4f-55cc-4962-b000-a2a20662b821",
"description": "Expense_07/25 for business trip",
"documentId": "c77fbedb-1ff3-4fed-8716-4d3e3fc85ccf",
"expenseLines": [
{
"account ": {
"id": "db32-4f56-8a9b-1234567890ab",
"code": "200",
"name": "EXPENSE",
"number": 4900
},
"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",
"description": "Tax19",
"taxRatePercentage": "19"
},
"totalGrossAmount": 119,
"totalNetAmount": 100
}
],
"generatorName": "Maesn GmbH",
"journalCode": "60",
"note": "Gasoline for business trip",
"paymentTermId": "d2f3e4b5-6a7b-8c9d-0e1f-2g3h4i5j6k7l",
"paymentType": "CASH",
"supplierId": "52c049b9-91b7-4828-b346-e1eeadfa31dd",
"totalGrossAmount": 119,
"totalNetAmount": 100,
"totalTaxAmount": 5,
"transactionDate": "2025-07-15T00:00:00Z"
}' \
--form files.items='@example-file'import requests
url = "https://api.maesn.dev/accounting/expenses/async"
files = { "files.items": ("example-file", open("example-file", "rb")) }
payload = {
"files": "<string>",
"expense": "{
\"account \": {
\"id\": \"db32-4f56-8a9b-1234567890ab\",
\"code\": \"200\",
\"name\": \"EXPENSE\",
\"number\": 4900
},
\"currency\": \"EUR\",
\"customerId\": \"8a32de4f-55cc-4962-b000-a2a20662b821\",
\"description\": \"Expense_07/25 for business trip\",
\"documentId\": \"c77fbedb-1ff3-4fed-8716-4d3e3fc85ccf\",
\"expenseLines\": [
{
\"account \": {
\"id\": \"db32-4f56-8a9b-1234567890ab\",
\"code\": \"200\",
\"name\": \"EXPENSE\",
\"number\": 4900
},
\"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\",
\"description\": \"Tax19\",
\"taxRatePercentage\": \"19\"
},
\"totalGrossAmount\": 119,
\"totalNetAmount\": 100
}
],
\"generatorName\": \"Maesn GmbH\",
\"journalCode\": \"60\",
\"note\": \"Gasoline for business trip\",
\"paymentTermId\": \"d2f3e4b5-6a7b-8c9d-0e1f-2g3h4i5j6k7l\",
\"paymentType\": \"CASH\",
\"supplierId\": \"52c049b9-91b7-4828-b346-e1eeadfa31dd\",
\"totalGrossAmount\": 119,
\"totalNetAmount\": 100,
\"totalTaxAmount\": 5,
\"transactionDate\": \"2025-07-15T00:00:00Z\"
}"
}
headers = {
"X-API-KEY": "<x-api-key>",
"X-ACCOUNT-KEY": "<x-account-key>"
}
response = requests.post(url, data=payload, files=files, headers=headers)
print(response.text)const form = new FormData();
form.append('files', '<string>');
form.append('expense', '{
"account ": {
"id": "db32-4f56-8a9b-1234567890ab",
"code": "200",
"name": "EXPENSE",
"number": 4900
},
"currency": "EUR",
"customerId": "8a32de4f-55cc-4962-b000-a2a20662b821",
"description": "Expense_07/25 for business trip",
"documentId": "c77fbedb-1ff3-4fed-8716-4d3e3fc85ccf",
"expenseLines": [
{
"account ": {
"id": "db32-4f56-8a9b-1234567890ab",
"code": "200",
"name": "EXPENSE",
"number": 4900
},
"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",
"description": "Tax19",
"taxRatePercentage": "19"
},
"totalGrossAmount": 119,
"totalNetAmount": 100
}
],
"generatorName": "Maesn GmbH",
"journalCode": "60",
"note": "Gasoline for business trip",
"paymentTermId": "d2f3e4b5-6a7b-8c9d-0e1f-2g3h4i5j6k7l",
"paymentType": "CASH",
"supplierId": "52c049b9-91b7-4828-b346-e1eeadfa31dd",
"totalGrossAmount": 119,
"totalNetAmount": 100,
"totalTaxAmount": 5,
"transactionDate": "2025-07-15T00:00:00Z"
}');
form.append('files.items', '{
"fileName": "example-file"
}');
const options = {
method: 'POST',
headers: {'X-API-KEY': '<x-api-key>', 'X-ACCOUNT-KEY': '<x-account-key>'}
};
options.body = form;
fetch('https://api.maesn.dev/accounting/expenses/async', 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/async",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"files\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"expense\"\r\n\r\n{\r\n \"account \": {\r\n \"id\": \"db32-4f56-8a9b-1234567890ab\",\r\n \"code\": \"200\",\r\n \"name\": \"EXPENSE\",\r\n \"number\": 4900\r\n },\r\n \"currency\": \"EUR\",\r\n \"customerId\": \"8a32de4f-55cc-4962-b000-a2a20662b821\",\r\n \"description\": \"Expense_07/25 for business trip\",\r\n \"documentId\": \"c77fbedb-1ff3-4fed-8716-4d3e3fc85ccf\",\r\n \"expenseLines\": [\r\n {\r\n \"account \": {\r\n \"id\": \"db32-4f56-8a9b-1234567890ab\",\r\n \"code\": \"200\",\r\n \"name\": \"EXPENSE\",\r\n \"number\": 4900\r\n },\r\n \"currency\": \"EUR\",\r\n \"description\": \"Gasoline for business trip\",\r\n \"dimensions\": [\r\n {\r\n \"id\": \"efa82f42-fd85-11e1-a21f-0800200c9a33\",\r\n \"categoryName\": \"CostCenter\",\r\n \"name\": \"Material/Waren\"\r\n }\r\n ],\r\n \"documentNumber\": \"EXP-12345\",\r\n \"exchangeRate\": 1,\r\n \"itemId\": \"9fc4f3a2-5b8e-4d1b-8a0c-9f6e7d2f3e4b\",\r\n \"taxRate\": {\r\n \"id\": \"1895b05b-38a6-4a6a-9653-166389894350\",\r\n \"code\": \"03\",\r\n \"description\": \"Tax19\",\r\n \"taxRatePercentage\": \"19\"\r\n },\r\n \"totalGrossAmount\": 119,\r\n \"totalNetAmount\": 100\r\n }\r\n ],\r\n \"generatorName\": \"Maesn GmbH\",\r\n \"journalCode\": \"60\",\r\n \"note\": \"Gasoline for business trip\",\r\n \"paymentTermId\": \"d2f3e4b5-6a7b-8c9d-0e1f-2g3h4i5j6k7l\",\r\n \"paymentType\": \"CASH\",\r\n \"supplierId\": \"52c049b9-91b7-4828-b346-e1eeadfa31dd\",\r\n \"totalGrossAmount\": 119,\r\n \"totalNetAmount\": 100,\r\n \"totalTaxAmount\": 5,\r\n \"transactionDate\": \"2025-07-15T00:00:00Z\"\r\n}\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"files.items\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n{\r\n \"fileName\": \"example-file\"\r\n}\r\n-----011000010111000001101001--",
CURLOPT_HTTPHEADER => [
"Content-Type: multipart/form-data",
"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"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.maesn.dev/accounting/expenses/async"
payload := strings.NewReader("-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"files\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"expense\"\r\n\r\n{\r\n \"account \": {\r\n \"id\": \"db32-4f56-8a9b-1234567890ab\",\r\n \"code\": \"200\",\r\n \"name\": \"EXPENSE\",\r\n \"number\": 4900\r\n },\r\n \"currency\": \"EUR\",\r\n \"customerId\": \"8a32de4f-55cc-4962-b000-a2a20662b821\",\r\n \"description\": \"Expense_07/25 for business trip\",\r\n \"documentId\": \"c77fbedb-1ff3-4fed-8716-4d3e3fc85ccf\",\r\n \"expenseLines\": [\r\n {\r\n \"account \": {\r\n \"id\": \"db32-4f56-8a9b-1234567890ab\",\r\n \"code\": \"200\",\r\n \"name\": \"EXPENSE\",\r\n \"number\": 4900\r\n },\r\n \"currency\": \"EUR\",\r\n \"description\": \"Gasoline for business trip\",\r\n \"dimensions\": [\r\n {\r\n \"id\": \"efa82f42-fd85-11e1-a21f-0800200c9a33\",\r\n \"categoryName\": \"CostCenter\",\r\n \"name\": \"Material/Waren\"\r\n }\r\n ],\r\n \"documentNumber\": \"EXP-12345\",\r\n \"exchangeRate\": 1,\r\n \"itemId\": \"9fc4f3a2-5b8e-4d1b-8a0c-9f6e7d2f3e4b\",\r\n \"taxRate\": {\r\n \"id\": \"1895b05b-38a6-4a6a-9653-166389894350\",\r\n \"code\": \"03\",\r\n \"description\": \"Tax19\",\r\n \"taxRatePercentage\": \"19\"\r\n },\r\n \"totalGrossAmount\": 119,\r\n \"totalNetAmount\": 100\r\n }\r\n ],\r\n \"generatorName\": \"Maesn GmbH\",\r\n \"journalCode\": \"60\",\r\n \"note\": \"Gasoline for business trip\",\r\n \"paymentTermId\": \"d2f3e4b5-6a7b-8c9d-0e1f-2g3h4i5j6k7l\",\r\n \"paymentType\": \"CASH\",\r\n \"supplierId\": \"52c049b9-91b7-4828-b346-e1eeadfa31dd\",\r\n \"totalGrossAmount\": 119,\r\n \"totalNetAmount\": 100,\r\n \"totalTaxAmount\": 5,\r\n \"transactionDate\": \"2025-07-15T00:00:00Z\"\r\n}\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"files.items\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n{\r\n \"fileName\": \"example-file\"\r\n}\r\n-----011000010111000001101001--")
req, _ := http.NewRequest("POST", url, payload)
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.post("https://api.maesn.dev/accounting/expenses/async")
.header("X-API-KEY", "<x-api-key>")
.header("X-ACCOUNT-KEY", "<x-account-key>")
.body("-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"files\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"expense\"\r\n\r\n{\r\n \"account \": {\r\n \"id\": \"db32-4f56-8a9b-1234567890ab\",\r\n \"code\": \"200\",\r\n \"name\": \"EXPENSE\",\r\n \"number\": 4900\r\n },\r\n \"currency\": \"EUR\",\r\n \"customerId\": \"8a32de4f-55cc-4962-b000-a2a20662b821\",\r\n \"description\": \"Expense_07/25 for business trip\",\r\n \"documentId\": \"c77fbedb-1ff3-4fed-8716-4d3e3fc85ccf\",\r\n \"expenseLines\": [\r\n {\r\n \"account \": {\r\n \"id\": \"db32-4f56-8a9b-1234567890ab\",\r\n \"code\": \"200\",\r\n \"name\": \"EXPENSE\",\r\n \"number\": 4900\r\n },\r\n \"currency\": \"EUR\",\r\n \"description\": \"Gasoline for business trip\",\r\n \"dimensions\": [\r\n {\r\n \"id\": \"efa82f42-fd85-11e1-a21f-0800200c9a33\",\r\n \"categoryName\": \"CostCenter\",\r\n \"name\": \"Material/Waren\"\r\n }\r\n ],\r\n \"documentNumber\": \"EXP-12345\",\r\n \"exchangeRate\": 1,\r\n \"itemId\": \"9fc4f3a2-5b8e-4d1b-8a0c-9f6e7d2f3e4b\",\r\n \"taxRate\": {\r\n \"id\": \"1895b05b-38a6-4a6a-9653-166389894350\",\r\n \"code\": \"03\",\r\n \"description\": \"Tax19\",\r\n \"taxRatePercentage\": \"19\"\r\n },\r\n \"totalGrossAmount\": 119,\r\n \"totalNetAmount\": 100\r\n }\r\n ],\r\n \"generatorName\": \"Maesn GmbH\",\r\n \"journalCode\": \"60\",\r\n \"note\": \"Gasoline for business trip\",\r\n \"paymentTermId\": \"d2f3e4b5-6a7b-8c9d-0e1f-2g3h4i5j6k7l\",\r\n \"paymentType\": \"CASH\",\r\n \"supplierId\": \"52c049b9-91b7-4828-b346-e1eeadfa31dd\",\r\n \"totalGrossAmount\": 119,\r\n \"totalNetAmount\": 100,\r\n \"totalTaxAmount\": 5,\r\n \"transactionDate\": \"2025-07-15T00:00:00Z\"\r\n}\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"files.items\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n{\r\n \"fileName\": \"example-file\"\r\n}\r\n-----011000010111000001101001--")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.maesn.dev/accounting/expenses/async")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-API-KEY"] = '<x-api-key>'
request["X-ACCOUNT-KEY"] = '<x-account-key>'
request.body = "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"files\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"expense\"\r\n\r\n{\r\n \"account \": {\r\n \"id\": \"db32-4f56-8a9b-1234567890ab\",\r\n \"code\": \"200\",\r\n \"name\": \"EXPENSE\",\r\n \"number\": 4900\r\n },\r\n \"currency\": \"EUR\",\r\n \"customerId\": \"8a32de4f-55cc-4962-b000-a2a20662b821\",\r\n \"description\": \"Expense_07/25 for business trip\",\r\n \"documentId\": \"c77fbedb-1ff3-4fed-8716-4d3e3fc85ccf\",\r\n \"expenseLines\": [\r\n {\r\n \"account \": {\r\n \"id\": \"db32-4f56-8a9b-1234567890ab\",\r\n \"code\": \"200\",\r\n \"name\": \"EXPENSE\",\r\n \"number\": 4900\r\n },\r\n \"currency\": \"EUR\",\r\n \"description\": \"Gasoline for business trip\",\r\n \"dimensions\": [\r\n {\r\n \"id\": \"efa82f42-fd85-11e1-a21f-0800200c9a33\",\r\n \"categoryName\": \"CostCenter\",\r\n \"name\": \"Material/Waren\"\r\n }\r\n ],\r\n \"documentNumber\": \"EXP-12345\",\r\n \"exchangeRate\": 1,\r\n \"itemId\": \"9fc4f3a2-5b8e-4d1b-8a0c-9f6e7d2f3e4b\",\r\n \"taxRate\": {\r\n \"id\": \"1895b05b-38a6-4a6a-9653-166389894350\",\r\n \"code\": \"03\",\r\n \"description\": \"Tax19\",\r\n \"taxRatePercentage\": \"19\"\r\n },\r\n \"totalGrossAmount\": 119,\r\n \"totalNetAmount\": 100\r\n }\r\n ],\r\n \"generatorName\": \"Maesn GmbH\",\r\n \"journalCode\": \"60\",\r\n \"note\": \"Gasoline for business trip\",\r\n \"paymentTermId\": \"d2f3e4b5-6a7b-8c9d-0e1f-2g3h4i5j6k7l\",\r\n \"paymentType\": \"CASH\",\r\n \"supplierId\": \"52c049b9-91b7-4828-b346-e1eeadfa31dd\",\r\n \"totalGrossAmount\": 119,\r\n \"totalNetAmount\": 100,\r\n \"totalTaxAmount\": 5,\r\n \"transactionDate\": \"2025-07-15T00:00:00Z\"\r\n}\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"files.items\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n{\r\n \"fileName\": \"example-file\"\r\n}\r\n-----011000010111000001101001--"
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": {
"taskId": "02cc5849-b23c-48fe-8a9b-96f74bfc9571"
}
}Field support per integration

DATEV Unternehmen Online
DATEV Unternehmen Online
This endpoints is asynchronous. To check the status of the request, use the
GET asyncTask endpoint.
For more info about asynchronous tasks visit the Asynchronous Task section.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.string
required
Show properties
Show properties
Account
Show properties
Show properties
string
required
The
To get the correct name, you can use the
Note that the
account.name field represents the name of the correct ledger folder where the data will be sent to.To get the correct name, you can use the
GET Accounts endpoint.Note that the
ledgerName must be of type CASH.enum
required
The
currency field supports ISO 4217 (3-letter codes).
For details visits the Standardized Data section.string
required
JournalLineItem[]
required
Show properties
Show properties
Account
Show properties
Show properties
number
The
account.number field specifies the general ledger account linked to the expense line.string
required
The
description field provides details about the specific expense line.It cannot exceed 60 characters in length.Dimension
Show properties
Show properties
string
The
name field specifies the name of the dimension associated with the expense line.It cannot exceed 36 characters in length. It must follow the pattern : ^([\S][\S ]{0,34}[\S]|[\S]{0,1})$.Example: Marketing.string
The
documentNumber field represents the document number reference.It must match the pattern: ^[a-zA-Z0-9$%&*\+\-/]{0,36}$.taxRate
number
required
string
The
note field allows for additional information or comments related to the expense.
It cannot exceed 120 characters in length.number
required
string
required
file[]
Last modified on July 9, 2026
Was this page helpful?
⌘I