Neue API-Version v7.8.64 wurde veröffentlicht! 🎉
REST Dokumentation
POST Beleg erstellen

Beleg erstellen

Mit diesem Endpunkt können Sie einen neuen Beleg erstellen.

Request

POST /api/v1/receipts
curl --request POST \
     --url 'https://www.zep-online.de/zepinstanz/next/api/v1/receipts' \
     --header 'Accept: application/json' \
     --header 'Authorization: Bearer {token}' \
     --header 'Content-Type: application/json' \
     --data '{
  "employee_id": "max.mustermann",
  "date": "2024-11-15",
  "receipt_type_id": "Fahrkarte",
  "project_id": 456,
  "payment_method": "privat",
  "currency": "EUR",
  "is_amount_net": false,
  "note": "Berlin -> Hamburg (Deutsche Bahn)",
  "receiptAmounts": [
    {
      "tax": 19.0,
      "quantity": 1,
      "amount": 89.90
    }
  ]
}'

Pflichtfelder

Die folgenden Felder sind beim Erstellen eines Belegs erforderlich:

  • employee_id (string): Benutzername des Mitarbeiters (max. 255 Zeichen)
  • date (string): Belegdatum im Format YYYY-MM-DD
  • receipt_type_id (string): Belegart-Kennung (max. 255 Zeichen)
  • project_id (integer): Projekt-ID
  • payment_method (string): Zahlungsmethode (max. 255 Zeichen)
  • currency (string): Währungscode, z.B. EUR, USD (max. 32 Zeichen)
  • is_amount_net (boolean): Gibt an, ob der Betrag netto (true) oder brutto (false) ist
  • receiptAmounts (array): Array von Belegbeträgen (mindestens ein Eintrag erforderlich)
    • tax (number): Steuersatz in Prozent (0-100), muss mit dem Steuersatz der Belegart übereinstimmen
    • quantity (number): Menge (mindestens 1)
    • amount (number): Betrag (größer als 0)

Optionale Felder

  • performance_date (string, nullable): Leistungsdatum im Format YYYY-MM-DD (kann vom Belegdatum abweichen, wenn die Belegart dies unterstützt)
  • project_task_id (integer, nullable): Projektaufgaben-ID
  • is_invoice_amount_net (boolean, nullable): Gibt an, ob der Rechnungsbetrag netto (true) oder brutto (false) ist. Erforderlich, wenn ein receiptAmount einen invoicing_share > 0 hat
  • note (string, nullable): Notizen zum Beleg (max. 255 Zeichen)
  • receiptAmounts[].private_share (number, nullable): Privatanteil (mindestens 0)
  • receiptAmounts[].invoicing_share (number, nullable): Abrechnungsanteil (mindestens 0), wird nur berücksichtigt, wenn das Projekt Abrechnung erlaubt

Response

{
	"data": {
		"id": 123,
		"employee_id": "max.mustermann",
		"date": "2024-11-15",
		"receipt_type_id": "Fahrkarte",
		"currency": "EUR",
		"invoice_amount_currency": null,
		"note": "Berlin -> Hamburg (Deutsche Bahn)",
		"payment_method": "privat",
		"breakfast": 0,
		"lunch_or_dinner": 0,
		"location": null,
		"is_amount_net": false,
		"is_invoice_amount_net": false,
		"billing_status": null,
		"performance_date": "2024-11-15",
		"client_id": null,
		"created": "2024-11-15T14:23:45.000000Z",
		"modified": "2024-11-15T14:23:45.000000Z",
		"invoice_item_id": null,
		"project_id": 456,
		"project_task_id": null,
		"ticket_id": null,
		"subtask_id": null,
		"filename": null
	}
}

Fehlercodes

  • 401 Unauthorized: Ungültige oder fehlende Authentifizierung
  • 422 Unprocessable Entity: Validierungsfehler - überprüfen Sie die Request-Daten

Beispiele

Beleg mit mehreren Beträgen

{
	"employee_id": "max.mustermann",
	"date": "2024-11-20",
	"receipt_type_id": "Hotel",
	"project_id": 789,
	"payment_method": "Firmenkreditkarte",
	"currency": "EUR",
	"is_amount_net": true,
	"is_invoice_amount_net": true,
	"note": "Übernachtung Kundenbesuch München",
	"receiptAmounts": [
		{
			"tax": 7.0,
			"quantity": 2,
			"amount": 120.00,
			"private_share": 0,
			"invoicing_share": 240.00
		},
		{
			"tax": 19.0,
			"quantity": 1,
			"amount": 25.00,
			"private_share": 0,
			"invoicing_share": 25.00
		}
	]
}

Beleg mit Leistungsdatum

{
	"employee_id": "max.mustermann",
	"date": "2024-11-22",
	"performance_date": "2024-11-20",
	"receipt_type_id": "Bewirtung",
	"project_id": 456,
	"project_task_id": 12,
	"payment_method": "privat",
	"currency": "EUR",
	"is_amount_net": false,
	"note": "Geschäftsessen mit Kunde",
	"receiptAmounts": [
		{
			"tax": 19.0,
			"quantity": 1,
			"amount": 85.50
		}
	]
}