PlanDocket
Experte 25 min

Rechnungsautomatisierung

Rechnungen GoBD-konform automatisch erstellen, versenden, verbuchen und korrigieren.

Voraussetzungen

  • Ein API-Schlüssel mit den erforderlichen Bereichen
  • Ein aktiver PlanDocket-Account
1

Schlüssel und Einstellungen vorbereiten

Erstellen Sie einen API-Schlüssel mit dem Scope "invoices:write" (zusätzlich "payments:write", um Zahlungen zu buchen). Firmendaten, Bankverbindung, Steuersätze und Nummernkreise kommen aus den Rechnungseinstellungen im Adminbereich: Die API arbeitet nach genau denselben Regeln wie der Adminbereich. Positionen dürfen nur die Steuersätze Ihrer Rechnungseinstellungen verwenden.

2

Entwurf anlegen

POST /api/v1/invoices legt einen Entwurf für einen Teilnehmer ("event_participant_id") oder einen Kontakt ("contact_id") an. Ohne "items" werden die offenen abrechenbaren Posten des Teilnehmers (Stände, Serviceaufträge, Formeln) übernommen. Entwürfe haben noch keine Rechnungsnummer ("display_number" zeigt "Entwurf #id") und lassen sich per PATCH noch ändern.

curl -X POST "https://ihr-mandant.plandocket.com/api/v1/invoices" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "event_participant_id": 7,
    "items": [
      {"description": "Booth area 12 m²", "quantity": 12, "unit_price": 75, "tax_rate": 19}
    ],
    "include_billable_items": false
  }'
3

Ausstellen und versenden

POST /api/v1/invoices/{id}/send stellt den Entwurf aus (vergibt die nächste Nummer und das Rechnungsdatum und sperrt ihn) und schickt das PDF an die Rechnungsadresse oder an die Adressen in "to" (optional "cc", "bcc", "subject", "message"). POST /api/v1/invoices/{id}/issue stellt ohne E-Mail aus. Abkürzung: "issue": true oder "send": true schon beim Anlegen. Ausgestellte Rechnungen lassen sich nicht mehr bearbeiten.

curl -X POST "https://ihr-mandant.plandocket.com/api/v1/invoices/789/send" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "message": "Thank you for exhibiting with us."
  }'
4

PDF oder E-Rechnung herunterladen

GET /api/v1/invoices/{id}/pdf liefert das PDF (application/pdf). Für Rechnungen mit "e_invoice_format" xrechnung oder zugferd liefert GET /api/v1/invoices/{id}/e-invoice das XRechnung-XML bzw. das ZUGFeRD-PDF (E-Rechnung muss in den Einstellungen aktiviert sein).

curl -o invoice.pdf "https://ihr-mandant.plandocket.com/api/v1/invoices/789/pdf" \
  -H "Authorization: Bearer YOUR_API_KEY"

curl -o invoice.xml "https://ihr-mandant.plandocket.com/api/v1/invoices/789/e-invoice?format=xrechnung" \
  -H "Authorization: Bearer YOUR_API_KEY"
5

Zahlungen buchen

POST /api/v1/payments mit "invoice_number" und "amount" bucht eine Zahlung. Der Status (teilweise bezahlt, bezahlt, überfällig) ergibt sich automatisch aus Zahlungen und Gutschriften und kann nicht von Hand gesetzt werden (PATCH mit "status": "paid" wird mit 422 abgelehnt). Webhooks: "payment.received" bei jeder Zahlung und "invoice.paid", sobald nichts mehr offen ist.

curl -X POST "https://ihr-mandant.plandocket.com/api/v1/payments" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "invoice_number": "RE-2027-000311",
    "amount": 1071.00,
    "payment_date": "2027-04-12"
  }'
6

Mit einer Gutschrift korrigieren

Ausgestellte Rechnungen werden nie geändert (GoBD). POST /api/v1/invoices/{id}/cancel mit einem "reason" storniert die Rechnung und erzeugt eine Gutschrift über den noch offenen Betrag. Gutschriften stehen unter GET /api/v1/credit-notes und haben ein eigenes PDF. Ein nie ausgestellter Entwurf wird einfach verworfen.

curl -X POST "https://ihr-mandant.plandocket.com/api/v1/invoices/789/cancel" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "reason": "Invoiced twice"
  }'
API Version v1.0