cURL
curl --request POST \
--url https://api.maesn.dev/accounting/files \
--header 'Content-Type: multipart/form-data' \
--header 'X-ACCOUNT-KEY: <x-account-key>' \
--header 'X-API-KEY: <x-api-key>' \
--form file='@example-file' \
--form documentType=Rechnungseingang \
--form contactId=287a382-s35e624e5-fb9e-483 \
--form documentDate=2021-01-01T00:00:00Z \
--form documentId=b5e624e5-fb9e-4836-a443-87a3820f5b48 \
--form 'integrationSource=Third party app' \
--form 'note=Invoice 02-03-2023' \
--form resourceId=771cb8f9-c0e9-4010-bf85-6675af290e37 \
--form folderName=Invoiceimport requests
url = "https://api.maesn.dev/accounting/files"
files = { "file": ("example-file", open("example-file", "rb")) }
payload = {
"documentType": "Rechnungseingang",
"contactId": "287a382-s35e624e5-fb9e-483",
"documentDate": "2021-01-01T00:00:00Z",
"documentId": "b5e624e5-fb9e-4836-a443-87a3820f5b48",
"integrationSource": "Third party app",
"note": "Invoice 02-03-2023",
"resourceId": "771cb8f9-c0e9-4010-bf85-6675af290e37",
"folderName": "Invoice"
}
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('file', '<string>');
form.append('documentType', 'Rechnungseingang');
form.append('contactId', '287a382-s35e624e5-fb9e-483');
form.append('documentDate', '2021-01-01T00:00:00Z');
form.append('documentId', 'b5e624e5-fb9e-4836-a443-87a3820f5b48');
form.append('integrationSource', 'Third party app');
form.append('note', 'Invoice 02-03-2023');
form.append('resourceId', '771cb8f9-c0e9-4010-bf85-6675af290e37');
form.append('folderName', 'Invoice');
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/files', 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/files",
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=\"file\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"documentType\"\r\n\r\nRechnungseingang\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"contactId\"\r\n\r\n287a382-s35e624e5-fb9e-483\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"documentDate\"\r\n\r\n2021-01-01T00:00:00Z\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"documentId\"\r\n\r\nb5e624e5-fb9e-4836-a443-87a3820f5b48\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"integrationSource\"\r\n\r\nThird party app\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"note\"\r\n\r\nInvoice 02-03-2023\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"resourceId\"\r\n\r\n771cb8f9-c0e9-4010-bf85-6675af290e37\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"folderName\"\r\n\r\nInvoice\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/files"
payload := strings.NewReader("-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"file\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"documentType\"\r\n\r\nRechnungseingang\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"contactId\"\r\n\r\n287a382-s35e624e5-fb9e-483\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"documentDate\"\r\n\r\n2021-01-01T00:00:00Z\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"documentId\"\r\n\r\nb5e624e5-fb9e-4836-a443-87a3820f5b48\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"integrationSource\"\r\n\r\nThird party app\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"note\"\r\n\r\nInvoice 02-03-2023\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"resourceId\"\r\n\r\n771cb8f9-c0e9-4010-bf85-6675af290e37\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"folderName\"\r\n\r\nInvoice\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/files")
.header("X-API-KEY", "<x-api-key>")
.header("X-ACCOUNT-KEY", "<x-account-key>")
.body("-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"file\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"documentType\"\r\n\r\nRechnungseingang\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"contactId\"\r\n\r\n287a382-s35e624e5-fb9e-483\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"documentDate\"\r\n\r\n2021-01-01T00:00:00Z\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"documentId\"\r\n\r\nb5e624e5-fb9e-4836-a443-87a3820f5b48\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"integrationSource\"\r\n\r\nThird party app\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"note\"\r\n\r\nInvoice 02-03-2023\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"resourceId\"\r\n\r\n771cb8f9-c0e9-4010-bf85-6675af290e37\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"folderName\"\r\n\r\nInvoice\r\n-----011000010111000001101001--")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.maesn.dev/accounting/files")
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=\"file\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"documentType\"\r\n\r\nRechnungseingang\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"contactId\"\r\n\r\n287a382-s35e624e5-fb9e-483\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"documentDate\"\r\n\r\n2021-01-01T00:00:00Z\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"documentId\"\r\n\r\nb5e624e5-fb9e-4836-a443-87a3820f5b48\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"integrationSource\"\r\n\r\nThird party app\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"note\"\r\n\r\nInvoice 02-03-2023\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"resourceId\"\r\n\r\n771cb8f9-c0e9-4010-bf85-6675af290e37\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"folderName\"\r\n\r\nInvoice\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": {
"id": "document id",
"base64Encoded": true,
"content": "content",
"contentType": "application/pdf",
"fileName": "invoice.pdf"
}
}Files
Upload file
POST
/
accounting
/
files
cURL
curl --request POST \
--url https://api.maesn.dev/accounting/files \
--header 'Content-Type: multipart/form-data' \
--header 'X-ACCOUNT-KEY: <x-account-key>' \
--header 'X-API-KEY: <x-api-key>' \
--form file='@example-file' \
--form documentType=Rechnungseingang \
--form contactId=287a382-s35e624e5-fb9e-483 \
--form documentDate=2021-01-01T00:00:00Z \
--form documentId=b5e624e5-fb9e-4836-a443-87a3820f5b48 \
--form 'integrationSource=Third party app' \
--form 'note=Invoice 02-03-2023' \
--form resourceId=771cb8f9-c0e9-4010-bf85-6675af290e37 \
--form folderName=Invoiceimport requests
url = "https://api.maesn.dev/accounting/files"
files = { "file": ("example-file", open("example-file", "rb")) }
payload = {
"documentType": "Rechnungseingang",
"contactId": "287a382-s35e624e5-fb9e-483",
"documentDate": "2021-01-01T00:00:00Z",
"documentId": "b5e624e5-fb9e-4836-a443-87a3820f5b48",
"integrationSource": "Third party app",
"note": "Invoice 02-03-2023",
"resourceId": "771cb8f9-c0e9-4010-bf85-6675af290e37",
"folderName": "Invoice"
}
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('file', '<string>');
form.append('documentType', 'Rechnungseingang');
form.append('contactId', '287a382-s35e624e5-fb9e-483');
form.append('documentDate', '2021-01-01T00:00:00Z');
form.append('documentId', 'b5e624e5-fb9e-4836-a443-87a3820f5b48');
form.append('integrationSource', 'Third party app');
form.append('note', 'Invoice 02-03-2023');
form.append('resourceId', '771cb8f9-c0e9-4010-bf85-6675af290e37');
form.append('folderName', 'Invoice');
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/files', 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/files",
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=\"file\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"documentType\"\r\n\r\nRechnungseingang\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"contactId\"\r\n\r\n287a382-s35e624e5-fb9e-483\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"documentDate\"\r\n\r\n2021-01-01T00:00:00Z\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"documentId\"\r\n\r\nb5e624e5-fb9e-4836-a443-87a3820f5b48\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"integrationSource\"\r\n\r\nThird party app\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"note\"\r\n\r\nInvoice 02-03-2023\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"resourceId\"\r\n\r\n771cb8f9-c0e9-4010-bf85-6675af290e37\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"folderName\"\r\n\r\nInvoice\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/files"
payload := strings.NewReader("-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"file\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"documentType\"\r\n\r\nRechnungseingang\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"contactId\"\r\n\r\n287a382-s35e624e5-fb9e-483\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"documentDate\"\r\n\r\n2021-01-01T00:00:00Z\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"documentId\"\r\n\r\nb5e624e5-fb9e-4836-a443-87a3820f5b48\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"integrationSource\"\r\n\r\nThird party app\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"note\"\r\n\r\nInvoice 02-03-2023\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"resourceId\"\r\n\r\n771cb8f9-c0e9-4010-bf85-6675af290e37\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"folderName\"\r\n\r\nInvoice\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/files")
.header("X-API-KEY", "<x-api-key>")
.header("X-ACCOUNT-KEY", "<x-account-key>")
.body("-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"file\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"documentType\"\r\n\r\nRechnungseingang\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"contactId\"\r\n\r\n287a382-s35e624e5-fb9e-483\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"documentDate\"\r\n\r\n2021-01-01T00:00:00Z\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"documentId\"\r\n\r\nb5e624e5-fb9e-4836-a443-87a3820f5b48\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"integrationSource\"\r\n\r\nThird party app\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"note\"\r\n\r\nInvoice 02-03-2023\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"resourceId\"\r\n\r\n771cb8f9-c0e9-4010-bf85-6675af290e37\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"folderName\"\r\n\r\nInvoice\r\n-----011000010111000001101001--")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.maesn.dev/accounting/files")
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=\"file\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"documentType\"\r\n\r\nRechnungseingang\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"contactId\"\r\n\r\n287a382-s35e624e5-fb9e-483\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"documentDate\"\r\n\r\n2021-01-01T00:00:00Z\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"documentId\"\r\n\r\nb5e624e5-fb9e-4836-a443-87a3820f5b48\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"integrationSource\"\r\n\r\nThird party app\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"note\"\r\n\r\nInvoice 02-03-2023\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"resourceId\"\r\n\r\n771cb8f9-c0e9-4010-bf85-6675af290e37\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"folderName\"\r\n\r\nInvoice\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": {
"id": "document id",
"base64Encoded": true,
"content": "content",
"contentType": "application/pdf",
"fileName": "invoice.pdf"
}
}Field support per integration

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.File
required
The name of the uploaded file must include the file extension, for example
invoice.pdf.The file name must not exceed 255 characters in length.
string
The
documentId field can be used to uniquely identify a document. If provided, it must be a valid GUID.string
required
The
documentType field must match one of the document types returned by the GET Document Types endpoint.string

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.File
required
The name of the uploaded file must include the file extension, for example
invoice.pdf.The file name must not exceed 255 characters in length.
string
required
string
The
documentId field can be used to uniquely identify a document. If provided, it must be a valid GUID.string
required
The
documentType field must match one of the document types returned by the GET Document Types endpoint.string
required
The
integrationSource field should be set to the name of your application integrating with DATEV.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.File
required
The file name must not exceed 255 characters in length.
string
The
contactId field is required for the INVOICE document type.string
required
Available options:
BILL, INVOICEQuery Parameters
Body
multipart/form-data
Example:
"Rechnungseingang"
Example:
"287a382-s35e624e5-fb9e-483"
Example:
"2021-01-01T00:00:00Z"
Example:
"b5e624e5-fb9e-4836-a443-87a3820f5b48"
Example:
"Third party app"
Example:
"Invoice 02-03-2023"
Example:
"771cb8f9-c0e9-4010-bf85-6675af290e37"
Example:
"Invoice"
Last modified on September 15, 2026
Was this page helpful?