curl --request GET \
--url https://api.paywise.de/mahnservice/v1/invoices/ \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.paywise.de/mahnservice/v1/invoices/"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.paywise.de/mahnservice/v1/invoices/', 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.paywise.de/mahnservice/v1/invoices/",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$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.paywise.de/mahnservice/v1/invoices/"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
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.paywise.de/mahnservice/v1/invoices/")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.paywise.de/mahnservice/v1/invoices/")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"count": 123,
"results": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"invoice_number": "<string>",
"amount": "<string>",
"due_date": "2023-12-25",
"debtor": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"access_mode": "test",
"dunning_state": "held",
"archived": true,
"has_document": true,
"document": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"status": "pending",
"download_url": "<string>"
},
"balance": "<string>",
"paid_amount": "<string>",
"overpaid": true,
"created": "2023-11-07T05:31:56Z",
"updated": "2023-11-07T05:31:56Z",
"currency": "EUR",
"document_date": "2023-12-25",
"your_reference": "<string>"
}
],
"next": "http://api.example.org/accounts/?offset=400&limit=100",
"previous": "http://api.example.org/accounts/?offset=200&limit=100"
}{
"detail": "<string>",
"code": "<string>",
"errors": [
{
"field": "<string>",
"code": "<string>",
"message": "<string>"
}
]
}{
"detail": "<string>",
"code": "<string>",
"errors": [
{
"field": "<string>",
"code": "<string>",
"message": "<string>"
}
]
}{
"detail": "<string>",
"code": "<string>",
"errors": [
{
"field": "<string>",
"code": "<string>",
"message": "<string>"
}
]
}{
"detail": "<string>",
"code": "<string>",
"errors": [
{
"field": "<string>",
"code": "<string>",
"message": "<string>"
}
]
}{
"detail": "<string>",
"code": "<string>",
"errors": [
{
"field": "<string>",
"code": "<string>",
"message": "<string>"
}
]
}List invoices
Invoices for the public Mahnservice API: the full lifecycle.
Submit creates a held invoice — no dunning process exists until /release creates one. Release enrolls the invoice into the dunning flow (active when the company’s Mahnlauf is activated, pending until then; parked paused under company or debtor holds). PATCH corrects an invoice while it is still held — the only correction window there is, because submit is idempotent on the invoice number and ignores changed fields, and after release the dunning history already references the amount and the due date. Payments, cancel and write-off settle or end the claim. All scoped to the token’s company; the debtor is referenced by UUID.
Write actions apply only to API-submitted invoices; bookkeeping-synced invoices are readable here but owned by their bookkeeping system. Payment reporting stays open through a subscription lapse — a lapsed customer must still be able to stop dunning on a paid invoice.
curl --request GET \
--url https://api.paywise.de/mahnservice/v1/invoices/ \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.paywise.de/mahnservice/v1/invoices/"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.paywise.de/mahnservice/v1/invoices/', 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.paywise.de/mahnservice/v1/invoices/",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$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.paywise.de/mahnservice/v1/invoices/"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
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.paywise.de/mahnservice/v1/invoices/")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.paywise.de/mahnservice/v1/invoices/")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"count": 123,
"results": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"invoice_number": "<string>",
"amount": "<string>",
"due_date": "2023-12-25",
"debtor": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"access_mode": "test",
"dunning_state": "held",
"archived": true,
"has_document": true,
"document": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"status": "pending",
"download_url": "<string>"
},
"balance": "<string>",
"paid_amount": "<string>",
"overpaid": true,
"created": "2023-11-07T05:31:56Z",
"updated": "2023-11-07T05:31:56Z",
"currency": "EUR",
"document_date": "2023-12-25",
"your_reference": "<string>"
}
],
"next": "http://api.example.org/accounts/?offset=400&limit=100",
"previous": "http://api.example.org/accounts/?offset=200&limit=100"
}{
"detail": "<string>",
"code": "<string>",
"errors": [
{
"field": "<string>",
"code": "<string>",
"message": "<string>"
}
]
}{
"detail": "<string>",
"code": "<string>",
"errors": [
{
"field": "<string>",
"code": "<string>",
"message": "<string>"
}
]
}{
"detail": "<string>",
"code": "<string>",
"errors": [
{
"field": "<string>",
"code": "<string>",
"message": "<string>"
}
]
}{
"detail": "<string>",
"code": "<string>",
"errors": [
{
"field": "<string>",
"code": "<string>",
"message": "<string>"
}
]
}{
"detail": "<string>",
"code": "<string>",
"errors": [
{
"field": "<string>",
"code": "<string>",
"message": "<string>"
}
]
}Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Query Parameters
Number of results to return per page; defaults to 10.
1 <= x <= 100Zero-based index of the first result; defaults to 0.
x >= 0Response
Total number of matching resources.
123
Resources returned for the requested page.
Show child attributes
Show child attributes
URL for the next page, or null on the last page.
"http://api.example.org/accounts/?offset=400&limit=100"
URL for the previous page, or null on the first page.
"http://api.example.org/accounts/?offset=200&limit=100"
