Aller au contenu

Rechnungen

Ce contenu n’est pas encore disponible dans votre langue.

Eine Rechnung ist ein Abrechnungsdokument, das die Plattform für einen Aufenthalt ausstellt — ein Schweizer QR-Rechnungs-PDF, das an den Gast geht, plus die zugrundeliegenden Posten, die der Betreiber in der Admin-Konsole sieht. Der Rechnungs-Endpunkt stellt eine rein lesende Übersicht dieser Dokumente für Buchhaltungs- und ERP-Integrationen bereit.

Das öffentliche Rechnungsobjekt lässt Posten und das gerenderte PDF bewusst weg — es ist eine Kopfansicht, kein vollständiger Dokumentenexport. Das PDF oder die Postenaufschlüsselung abzurufen, steht auf der Roadmap.

GET /api/v1/public/invoices/

Erforderlicher Geltungsbereich: invoices:read

Query-Parameter:

NameTypStandardBeschreibung
pageinteger1Seitennummer, 1-indiziert
page_sizeinteger50Einträge pro Seite (max. 200)

In v1 sind keine Filter verfügbar. Standardsortierung: created_at absteigend — zuletzt ausgestellte zuerst. Den vollständigen Paginierungsvertrag finden Sie unter Paginierung und Filterung.

Antwort 200:

{
"count": 256,
"next": "https://api.campone.ch/api/v1/public/invoices/?page=2",
"previous": null,
"results": [
{
"id": 7714,
"invoice_number": "2026-000412",
"booking_id": 4821,
"total_chf": "412.50",
"status": "OFFEN",
"issued_at": "2026-04-26T09:18:03.992Z"
}
]
}

Antwortfelder (pro Ergebnis):

FeldTypBeschreibung
idintegerPrimärschlüssel der Rechnung, eindeutig innerhalb des Mandanten
invoice_numberstringFür den Betreiber sichtbare Rechnungsnummer (typischerweise YYYY-NNNNNN)
booking_idinteger oder nullID der Buchung, zu der diese Rechnung gehört. null bei Rechnungen ohne konkrete Buchung (z. B. reine POS-Rechnungen)
total_chfdecimal string (CHF)Gesamter abgerechneter Betrag in Schweizer Franken, einschliesslich aller Posten und der Kurtaxe
statusstringRechnungsstatuscode. Einer von OFFEN (offen / unbezahlt), ERLEDIGT (beglichen / bezahlt), STORNIERT (storniert), PICKUP (wartet auf persönliche Abholung / Bezahlung). Die deutschen Werte werden von der API wortwörtlich zurückgegeben
issued_atdatetime (ISO 8601, UTC)Zeitpunkt, zu dem die Rechnung erstellt wurde

Fehler: 401, 403, 429. Die Antwortformen finden Sie unter Fehler und Statuscodes.

Beispiel (curl):

Terminal-Fenster
curl -H "Authorization: Bearer ck_a1b2c3d4XXXXXXXXXXXXXXXXXXXXXXXX" \
"https://api.campone.ch/api/v1/public/invoices/?page=1"

Beispiel (Python):

import requests
r = requests.get(
"https://api.campone.ch/api/v1/public/invoices/",
headers={"Authorization": "Bearer ck_a1b2c3d4XXXXXXXXXXXXXXXXXXXXXXXX"},
params={"page": 1, "page_size": 100},
)
r.raise_for_status()
data = r.json()
for invoice in data["results"]:
print(invoice["invoice_number"], invoice["status"], invoice["total_chf"])

booking_id kann null sein. Rechnungen aus POS-Transaktionen oder vom Betreiber manuell ohne verknüpften Aufenthalt erstellte Rechnungen haben keine Buchung. Behandeln Sie den null-Fall ausdrücklich, wenn Sie Rechnungen nachgelagert mit Buchungen verbinden.

Das PDF ist in v1 nicht öffentlich. Dieser Endpunkt liefert nur Rechnungsköpfe. Das QR-Rechnungs-PDF exportieren Betreiber aus der Admin-Konsole; ein öffentlicher PDF-Endpunkt steht auf der Roadmap.

Statuswerte sind deutsche Zeichenketten. Das Feld status gibt den Roh-Enum-Wert aus dem internen Modell der Plattform zurück: OFFEN, ERLEDIGT, STORNIERT oder PICKUP. Ordnen Sie sie in Ihrer Integration zu als: OFFEN = offen / unbezahlt, ERLEDIGT = beglichen / bezahlt, STORNIERT = storniert, PICKUP = wartet auf persönliche Abholung oder Bezahlung. Behandeln Sie jeden Wert ausserhalb dieser Liste als unbekannt — in einer zukünftigen Minor-Version können weitere Codes hinzukommen.

Währung ist immer CHF. Die Plattform bedient Schweizer Campingplätze; total_chf ist in Schweizer Franken denominiert. In v1 gibt es kein separates Währungsfeld.