Rechnungen
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.
Rechnungen auflisten
Abschnitt betitelt „Rechnungen auflisten“GET /api/v1/public/invoices/Erforderlicher Geltungsbereich: invoices:read
Query-Parameter:
| Name | Typ | Standard | Beschreibung |
|---|---|---|---|
page | integer | 1 | Seitennummer, 1-indiziert |
page_size | integer | 50 | Einträ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):
| Feld | Typ | Beschreibung |
|---|---|---|
id | integer | Primärschlüssel der Rechnung, eindeutig innerhalb des Mandanten |
invoice_number | string | Für den Betreiber sichtbare Rechnungsnummer (typischerweise YYYY-NNNNNN) |
booking_id | integer oder null | ID der Buchung, zu der diese Rechnung gehört. null bei Rechnungen ohne konkrete Buchung (z. B. reine POS-Rechnungen) |
total_chf | decimal string (CHF) | Gesamter abgerechneter Betrag in Schweizer Franken, einschliesslich aller Posten und der Kurtaxe |
status | string | Rechnungsstatuscode. 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_at | datetime (ISO 8601, UTC) | Zeitpunkt, zu dem die Rechnung erstellt wurde |
Fehler: 401, 403, 429. Die Antwortformen finden Sie unter Fehler und Statuscodes.
Beispiel (curl):
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"])Häufige Stolpersteine
Abschnitt betitelt „Häufige Stolpersteine“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.