Lexoffice-php-api: Unterschied zwischen den Versionen
Slutz (Diskussion | Beiträge) |
Slutz (Diskussion | Beiträge) Keine Bearbeitungszusammenfassung |
||
(38 dazwischenliegende Versionen von 3 Benutzern werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
= Übersicht & Informationen = | = Übersicht & Informationen = | ||
PHP Client für [https://www. | PHP Client für [https://www.lexoffice.de/?cid=6143&pid=pmc&utm_medium=affiliate&utm_source=baebeca&utm_campaign=start Lexoffice] REST API | ||
Wir lieben Automatisierung und die nahtlose Verzahnung von Systemen! | Wir lieben Automatisierung und die nahtlose Verzahnung von Systemen! | ||
[https://www. | [https://www.lexoffice.de/?cid=6143&pid=pmc&utm_medium=affiliate&utm_source=baebeca&utm_campaign=start Lexoffice] stellt seinen Kunden eine öffentliche API-Schnittstelle zur Verfügung über die bestehende Systeme integriert oder Prozesse automatisiert werden können.<br> | ||
Für diesen Ansatz haben wir einen PHP-Client entwickelt und stellen diesen kostenfrei zur Verfügung. | Für diesen Ansatz haben wir einen PHP-Client entwickelt und stellen diesen kostenfrei zur Verfügung. | ||
Zeile 15: | Zeile 15: | ||
* Offizielle Lexoffice [https://developers.lexoffice.io/docs/ API-Dokumentation] | * Offizielle Lexoffice [https://developers.lexoffice.io/docs/ API-Dokumentation] | ||
[[Datei:Lexoffice logo.png||link=https://www. | [[Datei:Lexoffice logo.png||link=https://www.lexoffice.de/?cid=6143&pid=pmc&utm_medium=affiliate&utm_source=baebeca&utm_campaign=start]] | ||
== Download == | == Download == | ||
Zeile 37: | Zeile 37: | ||
== Lexoffice API Account erstellen == | == Lexoffice API Account erstellen == | ||
Erstellen Sie in Ihrem [https://www. | Erstellen Sie in Ihrem [https://www.lexoffice.de/?cid=6143&pid=pmc&utm_medium=affiliate&utm_source=baebeca&utm_campaign=start Lexoffice Account] einen API Key. | ||
Einstellungen :: Erweiterungen :: lexoffice Public API :: "Schlüssel neu erstellen" | Einstellungen :: Erweiterungen :: lexoffice Public API :: "Schlüssel neu erstellen" | ||
== Mehrwertsteuersenkung - Konjunkturpaket 01.07.2020 - 31.12.2020 == | |||
* https://www.lexoffice.de/mehrwertsteuer-rest-api/ | |||
* https://developers.lexoffice.io/docs/#faq-valid-tax-rates | |||
== One-Stop-Shop (OSS) ab 01.07.2021 == | |||
* Für den Voucher-Import reicht es aus die Methode get_needed_voucher_booking_id() zu nutzen. | |||
* https://support.lexoffice.de/de-form/articles/5207137-one-stop-shop-eu-regelung-belege-an-privatpersonen-im-eu-ausland | |||
== Rate-Limit == | |||
Lexoffice hat ein Rate-Limit von 2 Anfragen pro Sekunde. Siehe dazu: https://developers.lexoffice.io/docs/#api-rate-limits | |||
Dieses Rate-Limit wird automatisch erkannt und der Request wird nach einem Sleep von "Sekunden * Anzahl Versuche" erneut abgesetzt. | |||
Mithilfe von <code>$lexoffice->configure_rate_limit(bool $repeat = true, int $seconds_to_sleep = 1, int $max_tries = 10): void</code> kann man das Verhalten parametrisieren. | |||
Zusätzlich besteht die Möglichkeit via <code>configure_rate_limit_callable(callable $callback = null) : void</code> eine Callbackfunktion mitzugeben, die jedes Mal getriggert wird, wenn ein Rate-Limit getroffen wurde. Es wird dann ein bool Parameter mitgegeben ob der Aufruf noch einmal versucht wird. | |||
= Klasse einbinden = | = Klasse einbinden = | ||
Zeile 116: | Zeile 132: | ||
<syntaxhighlight lang="php"> | <syntaxhighlight lang="php"> | ||
array( | array( | ||
'voucherDate' => | 'voucherDate' => date(DATE_RFC3339_EXTENDED), | ||
'introduction' => 'Einleitungstext', | 'introduction' => 'Einleitungstext', | ||
'remark' => "Fußzeile\r\nMehrzeilig", | 'remark' => "Fußzeile\r\nMehrzeilig", | ||
Zeile 162: | Zeile 178: | ||
; finalized | ; finalized | ||
: Entscheidet ob die Rechnung fertiggestellt werden soll. | : Entscheidet ob die Rechnung fertiggestellt werden soll. | ||
== Serienrechnungen == | |||
=== Serienrechnung abfragen === | |||
<syntaxhighlight lang="php">$lexoffice->get_recurring_template( string $uuid ) : object</syntaxhighlight> | |||
;uuid | |||
:Die eindeutige uuid des Eintrages der abgefragt werden soll | |||
=== Alle Serienrechnungen abfragen === | |||
<syntaxhighlight lang="php">$lexoffice->get_recurring_templates_all() : object</syntaxhighlight> | |||
== Gutschriften == | == Gutschriften == | ||
=== Gutschrift | === Gutschrift abfragen === | ||
<syntaxhighlight lang="php">$lexoffice->get_creditnote( string $uuid ) : object</syntaxhighlight> | <syntaxhighlight lang="php">$lexoffice->get_creditnote( string $uuid ) : object</syntaxhighlight> | ||
;uuid | ;uuid | ||
:Die eindeutige uuid der Gutschrift die abgefragt werden soll | :Die eindeutige uuid der Gutschrift die abgefragt werden soll | ||
=== Gutschrift anlegen === | |||
<syntaxhighlight lang="php">$lexoffice->create_creditnote( array $data [, bool $finalized = false, string $linked_invoice_id = '' ] ) : object</syntaxhighlight> | |||
;data | |||
:Ein Array der Gutschriftsdaten nach der nötigen [https://developers.lexoffice.io/docs/#credit-notes-endpoint-credit-notes-properties Lexoffice Formatierung] | |||
:Beispiel | |||
<syntaxhighlight lang="php"> | |||
array( | |||
'voucherDate' => date(DATE_RFC3339_EXTENDED), | |||
'introduction' => 'Rechnungskorrektur', | |||
'remark' => "Fußzeile\r\nMehrzeilig", | |||
'address' => array( | |||
#'contactId' => '<id>', | |||
'name' => 'Frau Jane Doe', | |||
'street' => 'Str. 1', | |||
'zip' => '12345', | |||
'city' => 'Stadt', | |||
'countryCode' => 'DE', | |||
), | |||
'lineItems' => array( | |||
array( | |||
'type' => 'custom', | |||
'name' => 'Produktname', | |||
'description' => 'Beschreibung', | |||
'quantity' => 1, | |||
'unitName' => 'Stück', | |||
'unitPrice' => array( | |||
'currency' => 'EUR', | |||
'netAmount' => 10.99, | |||
'taxRatePercentage' => 19, | |||
), | |||
#'discountPercentage' => 0, | |||
), | |||
), | |||
'totalPrice' => array( | |||
'currency' => 'EUR', | |||
#'totalDiscountAbsolute' => 0, | |||
#'totalDiscountPercentage' => 0, | |||
), | |||
'taxConditions' => array( | |||
'taxType' => 'net', | |||
) | |||
) | |||
</syntaxhighlight> | |||
; finalized | |||
: Entscheidet ob die Gutschrift fertiggestellt werden soll. | |||
; linked_invoice_id | |||
: Eine lexoffice UUID einer offenen Rechnung für die eine Gutschrift erstellt wird. | |||
== Angebote == | == Angebote == | ||
=== Angebot | === Angebot abfragen === | ||
<syntaxhighlight lang="php">$lexoffice->get_quotation( string $uuid ) : object</syntaxhighlight> | <syntaxhighlight lang="php">$lexoffice->get_quotation( string $uuid ) : object</syntaxhighlight> | ||
;uuid | ;uuid | ||
:Die eindeutige uuid des Angebotes das abgefragt werden soll | :Die eindeutige uuid des Angebotes das abgefragt werden soll | ||
=== Angebot anlegen === | |||
<syntaxhighlight lang="php">$lexoffice->create_quotation( array $data [, bool $finalized = false ] ) : object</syntaxhighlight> | |||
;data | |||
:Ein Array der Angebotsdaten nach der nötigen [https://developers.lexoffice.io/docs/#quotations-endpoint-quotations-properties Lexoffice Formatierung] | |||
:Beispiel | |||
<syntaxhighlight lang="php"> | |||
array( | |||
'voucherDate' => substr(date('c'), 0, 19).'.000'.substr(date('c'), 19), | |||
'expirationDate' => substr(date('c'), 0, 19).'.000'.substr(date('c'), 19), | |||
'introduction' => 'Einleitungstext', | |||
'remark' => "Fußzeile\r\nMehrzeilig", | |||
'address' => array( | |||
#'contactId' => '<id>', | |||
'name' => 'Frau Jane Doe', | |||
'street' => 'Str. 1', | |||
'zip' => '12345', | |||
'city' => 'Stadt', | |||
'countryCode' => 'DE', | |||
), | |||
'lineItems' => array( | |||
array( | |||
'type' => 'custom', | |||
'name' => 'Produktname', | |||
'description' => 'Beschreibung', | |||
'quantity' => 1, | |||
'unitName' => 'Stück', | |||
'unitPrice' => array( | |||
'currency' => 'EUR', | |||
'netAmount' => 10.99, | |||
'taxRatePercentage' => 19, | |||
), | |||
#'discountPercentage' => 0, | |||
), | |||
), | |||
'totalPrice' => array( | |||
'currency' => 'EUR', | |||
#'totalDiscountAbsolute' => 0, | |||
#'totalDiscountPercentage' => 0, | |||
), | |||
'taxConditions' => array( | |||
'taxType' => 'net', | |||
), | |||
'shippingConditions' => [ | |||
'shippingDate' => date(DATE_RFC3339_EXTENDED), | |||
'shippingType' => 'delivery', | |||
], | |||
'paymentConditions' => [ | |||
'paymentTermLabel' => 'Vorkasse', | |||
'paymentTermDuration' => 1, | |||
], | |||
) | |||
</syntaxhighlight> | |||
; finalized | |||
: Entscheidet ob das ANgebot fertiggestellt werden soll. | |||
== Auftragsbestätigungen == | == Auftragsbestätigungen == | ||
=== Auftragsbestätigung | === Auftragsbestätigung abfragen === | ||
<syntaxhighlight lang="php">$lexoffice->get_orderconfirmation( string $uuid ) : object</syntaxhighlight> | <syntaxhighlight lang="php">$lexoffice->get_orderconfirmation( string $uuid ) : object</syntaxhighlight> | ||
;uuid | ;uuid | ||
:Die eindeutige uuid der Auftragsbestätigung die abgefragt werden soll | :Die eindeutige uuid der Auftragsbestätigung die abgefragt werden soll | ||
=== Auftragsbestätigung anlegen === | |||
<syntaxhighlight lang="php">$lexoffice->create_orderconfirmation( array $data ) : object</syntaxhighlight> | |||
;data | |||
:Ein Array der Auftragsbestätigungsdaten nach der nötigen [https://developers.lexoffice.io/docs/#invoices-properties Lexoffice Formatierung] | |||
:Beispiel | |||
<syntaxhighlight lang="php"> | |||
array( | |||
'voucherDate' => date(DATE_RFC3339_EXTENDED), | |||
'introduction' => 'Einleitungstext', | |||
'remark' => "Fußzeile\r\nMehrzeilig", | |||
'address' => array( | |||
#'contactId' => '<id>', | |||
'name' => 'Frau Jane Doe', | |||
'street' => 'Str. 1', | |||
'zip' => '12345', | |||
'city' => 'Stadt', | |||
'countryCode' => 'DE', | |||
), | |||
'lineItems' => array( | |||
array( | |||
'type' => 'custom', | |||
'name' => 'Produktname', | |||
'description' => 'Beschreibung', | |||
'quantity' => 1, | |||
'unitName' => 'Stück', | |||
'unitPrice' => array( | |||
'currency' => 'EUR', | |||
'netAmount' => 10.99, | |||
'taxRatePercentage' => 19, | |||
), | |||
#'discountPercentage' => 0, | |||
), | |||
), | |||
'totalPrice' => array( | |||
'currency' => 'EUR', | |||
#'totalDiscountAbsolute' => 0, | |||
#'totalDiscountPercentage' => 0, | |||
), | |||
'taxConditions' => array( | |||
'taxType' => 'net', | |||
), | |||
'shippingConditions' => array( | |||
'shippingDate' => date('Y-m-d').'T00:00:01.000+02:00', | |||
'shippingType' => 'delivery', | |||
), | |||
'paymentConditions' => array( | |||
'paymentTermLabel' => 'Vorkasse', | |||
'paymentTermDuration' => 1, | |||
), | |||
) | |||
</syntaxhighlight> | |||
== Lieferschein == | |||
=== Lieferschein abfragen === | |||
<syntaxhighlight lang="php">$lexoffice->get_deliverynote( string $uuid ) : object</syntaxhighlight> | |||
;uuid | |||
:Die eindeutige uuid des Lieferscheins der abgefragt werden soll | |||
=== Lieferschein anlegen === | |||
<syntaxhighlight lang="php">$lexoffice->create_delivery_note( array $data ) : object</syntaxhighlight> | |||
;data | |||
:Ein Array der Lieferscheindaten nach der nötigen [https://developers.lexoffice.io/docs/#delivery-notes-endpoint-delivery-notes-properties Lexoffice Formatierung] | |||
:Beispiel | |||
<syntaxhighlight lang="php"> | |||
array( | |||
'voucherDate' => date(DATE_RFC3339_EXTENDED), | |||
'introduction' => 'Einleitungstext', | |||
'remark' => "Fußzeile\r\nMehrzeilig", | |||
'address' => array( | |||
#'contactId' => '<id>', | |||
'name' => 'Frau Jane Doe', | |||
'street' => 'Str. 1', | |||
'zip' => '12345', | |||
'city' => 'Stadt', | |||
'countryCode' => 'DE', | |||
), | |||
'lineItems' => array( | |||
array( | |||
'type' => 'custom', | |||
'name' => 'Produktname', | |||
'description' => 'Beschreibung', | |||
'quantity' => 1, | |||
'unitName' => 'Stück', | |||
'unitPrice' => array( | |||
'currency' => 'EUR', | |||
'netAmount' => 10.99, | |||
'taxRatePercentage' => 19, | |||
), | |||
#'discountPercentage' => 0, | |||
), | |||
), | |||
'totalPrice' => array( | |||
'currency' => 'EUR', | |||
#'totalDiscountAbsolute' => 0, | |||
#'totalDiscountPercentage' => 0, | |||
), | |||
'taxConditions' => array( | |||
'taxType' => 'net', | |||
), | |||
'shippingConditions' => array( | |||
'shippingDate' => date('Y-m-d').'T00:00:01.000+02:00', | |||
'shippingType' => 'delivery', | |||
), | |||
'paymentConditions' => array( | |||
'paymentTermLabel' => 'Vorkasse', | |||
'paymentTermDuration' => 1, | |||
), | |||
) | |||
</syntaxhighlight> | |||
== Belege == | == Belege == | ||
Zeile 191: | Zeile 436: | ||
=== Beleg anlegen === | === Beleg anlegen === | ||
<syntaxhighlight lang="php">$lexoffice->create_voucher( array $data ) : object</syntaxhighlight> | <syntaxhighlight lang="php">$lexoffice->create_voucher( array $data ) : object</syntaxhighlight> | ||
;Paramater | |||
;data | ;data | ||
:Ein Array der Belegdaten nach der nötigen [https://developers.lexoffice.io/docs/#vouchers-endpoint-create-a-voucher Lexoffice Formatierung] | :Ein Array der Belegdaten nach der nötigen [https://developers.lexoffice.io/docs/#vouchers-endpoint-create-a-voucher Lexoffice Formatierung] | ||
Zeile 196: | Zeile 442: | ||
=== Beleg abfragen === | === Beleg abfragen === | ||
<syntaxhighlight lang="php">$lexoffice->get_voucher( string $uuid ) : object</syntaxhighlight> | <syntaxhighlight lang="php">$lexoffice->get_voucher( string $uuid ) : object</syntaxhighlight> | ||
;Paramater | |||
*uuid | |||
**Die eindeutige uuid des Beleges der abgefragt werden soll | |||
=== Belege | === Belege abfragen === | ||
<syntaxhighlight lang="php">$lexoffice->get_vouchers( string $type = 'invoice,creditnote,orderconfirmation', string $state = 'draft,open,paid,paidoff,voided,transferred', string $archived = 'both') : object</syntaxhighlight> | <syntaxhighlight lang="php">$lexoffice->get_vouchers( string $type = 'invoice,creditnote,orderconfirmation', string $state = 'draft,open,paid,paidoff,voided,transferred', string $archived = 'both', string $date_from = '', string $date_to = '') : object</syntaxhighlight> | ||
;type | ;type | ||
:Einen oder mehrere Typen von Belegen (komma getrennt) die abgefragt werden sollen | :Einen oder mehrere Typen von Belegen (komma getrennt) die abgefragt werden sollen | ||
Zeile 206: | Zeile 455: | ||
;archived | ;archived | ||
:"both", "true" oder "false" als String ob archivierte/nicht archivierte Belege ausgegeben werden sollen | :"both", "true" oder "false" als String ob archivierte/nicht archivierte Belege ausgegeben werden sollen | ||
;date_from | |||
:Datum (Format YYYY-MM-DD) ab wann einschließlich abgefragt werden soll | |||
;date_to | |||
:Datum (Format YYYY-MM-DD) bis wann einschließlich abgefragt werden soll | |||
=== | === Belegbild hochladen (nicht zugeordnet) === | ||
<syntaxhighlight lang="php">$lexoffice->upload_file($file) : object</syntaxhighlight> | <syntaxhighlight lang="php">$lexoffice->upload_file($file) : object</syntaxhighlight> | ||
;Parameter | ;Parameter | ||
Zeile 225: | Zeile 478: | ||
stdClass Object ( | stdClass Object ( | ||
[id] => 221fd5ed-5547-4bd3-b7c2-9796c1a0e4a6 | [id] => 221fd5ed-5547-4bd3-b7c2-9796c1a0e4a6 | ||
) | |||
</syntaxhighlight> | |||
=== Beleg hochladen (zugeordnet) === | |||
<syntaxhighlight lang="php">$lexoffice->upload_voucher($uuid, $file) : object</syntaxhighlight> | |||
;Parameter | |||
*uuid | |||
**Die ID des Beleges dem der Upload zugeordnet werden soll | |||
*file | |||
**Der Pfad zur Datei die hochgeladen werden soll | |||
; Rückgabe | |||
* id | |||
** Die eindeutige Datei-ID von lexoffice | |||
=== Beleg Dateien herunterladen === | |||
<syntaxhighlight lang="php">$lexoffice->get_voucher_files(string $uuid, string $filename_prefix) : array</syntaxhighlight> | |||
;Parameter | |||
*uiui | |||
**Die ID des Beleges dessen Dateien heruntergeladen werden sollen | |||
*filename_prefix | |||
** Der Dateipfad inkl. eines Dateiprefixes. | |||
; Rückgabe | |||
Ein Array der Dateinamen | |||
;Beispiel Anfrage | |||
<syntaxhighlight lang="php"> | |||
$lexoffice->get_voucher_files($uuid, '/files/IN_1234'); | |||
</syntaxhighlight> | |||
;Beispiel Rückgabe | |||
<syntaxhighlight lang="php"> | |||
array ( | |||
[0] => /files/IN_1234_1.jpg | |||
[1] => /files/IN_1234_2.png | |||
[2] => /files/IN_1234_3.pdf | |||
) | ) | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Zeile 237: | Zeile 525: | ||
=== Kontakt suchen === | === Kontakt suchen === | ||
<syntaxhighlight lang="php">$lexoffice->search_contact( array $filter ) : object</syntaxhighlight> | Bitte beachte das lexoffice stets eine Suche nach "contains" macht. Eine Suche nach ''hans@hans.de'' liefert einen Treffer für den Kontakt ''hans@hans.de.google.com'' | ||
<syntaxhighlight lang="php">$lexoffice->search_contact( array $filter, bool $respect_wildcards = false ) : object</syntaxhighlight> | |||
;Paramater | ;Paramater | ||
*filter | *filter | ||
Zeile 246: | Zeile 535: | ||
*** customer (true/false) | *** customer (true/false) | ||
*** vendor (true/false) | *** vendor (true/false) | ||
*wildcards | |||
** Bool | Wenn ''true'' werden die Zeichen "_" (ein Zeichen) und "%" (mehrere Zeichen) als Wildcards genutzt, andernfalls im Inhalt als Zeichen erwartet. | |||
;Beispiel Anfrage | ;Beispiel Anfrage | ||
<syntaxhighlight lang="php"> | <syntaxhighlight lang="php"> | ||
Zeile 253: | Zeile 544: | ||
'number' => '', | 'number' => '', | ||
'customer' => '', | 'customer' => '', | ||
' | 'vendor' => '', | ||
)); | )); | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Zeile 352: | Zeile 643: | ||
;uuid | ;uuid | ||
:Die ID eines zuvor erstellten Events. | :Die ID eines zuvor erstellten Events. | ||
== Steuern == | |||
=== Kleinunternehmer === | |||
<syntaxhighlight lang="php">$lexoffice->is_tax_free_company(): bool</syntaxhighlight> | |||
=== EU - Innergemeinschaftlicher Raum === | |||
<syntaxhighlight lang="php">$lexoffice->is_european_member(string $country_code, int $date): bool</syntaxhighlight> | |||
;$country_code | |||
:2-Stelliger Country Code des Rechnungslandes | |||
;$date | |||
:Timestamp Rechnungsdatum | |||
=== Buchungskategorie bestimmen === | |||
<syntaxhighlight lang="php">$lexoffice->get_needed_voucher_booking_id(float $taxrate, string $country_code, int $date, bool $euopean_vatid, bool $b2b_business, bool $physical_good = true): string</syntaxhighlight> | |||
;$taxrate | |||
:Steuersatz der verwendet werden soll (Wird auf Gültigkeit geprüft) | |||
;$country_code | |||
:2-Stelliger Country Code des Rechnungslandes | |||
;$date | |||
:Timestamp Rechnungsdatum | |||
;$euopean_vatid | |||
:Verfügt man über die Kunden UST-ID | |||
;$b2b_business | |||
:Handelt es sich um einen Endkunden oder Geschäftskunden | |||
;$physical_good | |||
Wird physikalische Ware oder digitale Dienstleistung verkauft | |||
=== Abfrage der möglichen Steuersätze === | |||
<syntaxhighlight lang="php">$lexoffice->get_taxrates(string $country_code, int $date): array</syntaxhighlight> | |||
;$country_code | |||
:2-Stelliger Country Code des Rechnungslandes | |||
;$date | |||
:Timestamp Rechnungsdatum | |||
=== Prüfung Steuersatz === | |||
<syntaxhighlight lang="php">$lexoffice->check_taxrate(float $taxrate, string $country_code, int $date): bool</syntaxhighlight> | |||
;$taxrate | |||
:Der zu prüfende Steuersatz | |||
;$country_code | |||
:2-Stelliger Country Code des Rechnungslandes | |||
;$date | |||
:Timestamp Rechnungsdatum | |||
== One-Stop-Shop (OSS) / Steuer Methoden == | |||
=== OSS Einstellungen prüfen === | |||
<syntaxhighlight lang="php">$lexoffice->is_oss_needed(string $country_code, int $date)</syntaxhighlight> | |||
;$country_code | |||
:2-Stelliger Country Code des Rechnungslandes | |||
;$date | |||
:Timestamp Rechnungsdatum | |||
=== Prüfung OSS Voucher Kategorie === | |||
<syntaxhighlight lang="php">$lexoffice->get_oss_voucher_category(string $country_code, int $date, int $booking_category = 1, float $taxrate = 0): string</syntaxhighlight> | |||
;$country_code | |||
:2-Stelliger Country Code des Rechnungslandes | |||
;$date | |||
:Timestamp Rechnungsdatum | |||
;$booking_category | |||
:Angabe welche Buchungskategorie genutzt werden soll | |||
:1 => Fernverkauf | |||
:2 => Elektronische Dienstleistung | |||
;$taxrate | |||
: Genutzter Steuersatz in Buchung | |||
== Sonstiges == | == Sonstiges == | ||
Zeile 357: | Zeile 713: | ||
=== PDFs herunterladen === | === PDFs herunterladen === | ||
<syntaxhighlight lang="php">$lexoffice->get_pdf( string $type, string $uuid, string $filename) : bool</syntaxhighlight> | <syntaxhighlight lang="php">$lexoffice->get_pdf(string $type, string $uuid, string $filename): bool</syntaxhighlight> | ||
;type | ;type | ||
:Die Art des Beleges. Möglich Varianten sind: "invoices", "credit-notes" | :Die Art des Beleges. Möglich Varianten sind: "invoices", "credit-notes" | ||
Zeile 364: | Zeile 720: | ||
;filename | ;filename | ||
:Der lokale Dateiname an dem das PDF abgelegt werden soll | :Der lokale Dateiname an dem das PDF abgelegt werden soll | ||
= Voucher Kategorien = | |||
Bei zu erstellenden Vouchers, muss ein Buchungskonto angegeben werden. | |||
; incoming | |||
: Ausgangsbelege (eingehender Geldfluß) | |||
; outgoing | |||
: Eingangsbelege (ausgehender Geldfluß) | |||
private $booking_categories = [ | |||
'incoming' => [ | |||
// Einnahmen | |||
'8f8664a1-fd86-11e1-a21f-0800200c9a66' => 'Einnahmen', | |||
'8f8664a0-fd86-11e1-a21f-0800200c9a66' => 'Dienstleistung', | |||
'8f8664a4-fd86-11e1-a21f-0800200c9a66' => 'Honorar/Gage', | |||
'8f8664a5-fd86-11e1-a21f-0800200c9a66' => 'Geräteverleih', | |||
'8f8664a6-fd86-11e1-a21f-0800200c9a66' => 'Prämien', | |||
'8f8664a7-fd86-11e1-a21f-0800200c9a66' => 'Provision/Courtage', | |||
'8f8664a8-fd86-11e1-a21f-0800200c9a66' => 'Warenverkäufe', | |||
'8f8664a9-fd86-11e1-a21f-0800200c9a66' => 'Wartung', | |||
'8f8664a3-fd86-11e1-a21f-0800200c9a66' => 'Erlösminderungen', | |||
'be32ceb3-684a-485e-b628-4bcc748bac4b' => 'Bauleistungen §13b', | |||
'380a20cb-d04c-426e-b49c-84c22adfa362' => 'Fremdleistungen §13b', | |||
'7a1efa0e-6283-4cbf-9583-8e88d3ba5960' => 'Einnahmen als Kleinunternehmer', | |||
'9075a4e3-66de-4795-a016-3889feca0d20' => 'Innergemeinschaftliche Lieferung', | |||
'ef5b1a6e-f690-4004-9a19-91276348894f' => 'Dienstleistungen an Drittländer', | |||
'93d24c20-ea84-424e-a731-5e1b78d1e6a9' => 'Ausfuhrlieferungen an Drittländer', | |||
// Sonstige Einnahmen | |||
'27758e6b-220a-4ad4-98a0-96e1f17e2783' => 'Forderungen gegenüber Krankenkassen aus Aufwendungsausgleichsgesetz', | |||
'cfddcc50-fd86-11e1-a21f-0800200c9a66' => 'Sonstige Einnahmen', | |||
'cfddcc52-fd86-11e1-a21f-0800200c9a66' => 'Miete/Pacht', | |||
'cfddcc53-fd86-11e1-a21f-0800200c9a66' => 'Patent- und Lizenzverträge', | |||
'4cef8d07-b757-43eb-8dd8-da0c947800ff' => 'Mahngebühren', | |||
'5f1c4290-ad14-4487-b6f9-cbb2aff5efe2' => 'Zinserträge', | |||
'aba9020f-d0a6-47ca-ace6-03d6ed492351' => 'Rundungsdifferenzen', | |||
'c9eebb77-3f62-4ffa-99af-887c345a4a02' => 'Währungsumrechnung', | |||
'b01910ba-bcdd-4465-865e-3ffe0159f193' => 'Erstattungen Aufwendungsausgleichsgesetz', | |||
// Vereinnahmte Umsatzsteuer | |||
'd9bc790d-1a26-40a6-8b32-e5ef7c8b4d52' => 'Umsatzsteuer-Forderungen', | |||
// Umsatzsteuer-Erstattungen | |||
'af1a07f3-8ce4-47dc-8c82-263960c2442d' => 'Umsatzsteuer-Vorauszahlungen', | |||
'487ce31c-4db6-40d2-b192-3485b5ae5c6e' => 'Umsatzsteuer-Vorjahr', | |||
// Anlagevermögen | |||
'c5430e38-6daa-46e7-99d5-a65fd737338f' => 'Software', | |||
'b32709ec-08c2-4d3f-8c29-4f8da6e03541' => 'Technische Anlagen und Maschinen', | |||
'4f01e761-d912-441f-ad1a-1c1d2d590a81' => 'KFZ', | |||
'13efe6dc-c3a3-4d6b-a793-81a1c0d78ece' => 'LKW', | |||
'21027249-d7c3-455f-9b27-88cfe23cb14f' => 'Sonstige Transportmittel', | |||
'78361a84-43e6-4643-84ce-7c4925e30a7f' => 'Werkzeuge', | |||
'd8f6b5c4-62c4-4ed8-8deb-27eb284de06d' => 'Betriebs-und Geschäftsausstattung', | |||
'f87b5aa8-aa1f-49bb-b5af-7fc6d52c0941' => 'Ladeneinrichtung', | |||
'fe4ed5d8-8e69-4d10-923e-525948ea34df' => 'Büroeinrichtung', | |||
'ec2ec6e5-217f-4e59-a3bc-ebd5562c3f50' => 'Geringwertige Wirtschaftsgüter', | |||
// Darlehen | |||
'4ae5384e-438e-4466-9c9f-338096abac58' => 'Darlehen', | |||
'b9439764-a201-4a5c-84f4-2ae20c8bd40d' => 'Aufnahme', | |||
'89c3d29c-5896-4747-8cbb-9e44cb269946' => 'Aufnahme Gesellschafter', | |||
'097c0c6f-8fb0-4277-9d4e-f36bb91a0737' => 'Tilgung Gesellschafter', | |||
// Privat | |||
'5461e150-10d7-492f-968d-33413ff63a53' => 'Privat', | |||
'cfddcc54-fd86-11e1-a21f-0800200c9a66' => 'Privateinlagen', | |||
'bc25f5d5-c2c7-4394-b5ae-f422a779d68a' => 'Gesellschafter-Einlagen', | |||
'ef5afd88-4a48-4582-8934-9b60fd9ad9d5' => 'Einkommensteuer', | |||
'6d0a1338-803c-4188-86a1-ba0b2f88e2f3' => 'Versicherungen', | |||
'55e8b902-671e-49a4-b4bf-7e3b6f9ad305' => 'Spenden', | |||
'db6c9e4f-bf42-424d-ab36-a1c0977c8375' => 'Krankheitskosten', | |||
// Kapital | |||
'a08696c7-ee18-48da-aba6-e5ba07b76082' => 'Ausstehende Einlagen', | |||
// Zu prüfen | |||
'32b4c1d5-050f-4b80-9377-a8e98384ebee' => 'Zu prüfen', | |||
'eeaffbf8-d006-4c8c-b035-992817499eb4' => 'Durchlaufende Posten', | |||
'6656bbd4-f278-4a3d-8e22-c8543abfe906' => 'Geldtransit', | |||
], | |||
'outgoing' => [ | |||
// Material/Waren | |||
'efa82f42-fd85-11e1-a21f-0800200c9a66' => 'Material/Waren', | |||
'97704fd4-0e83-4c5b-a09c-1b4289644d10' => 'Materialeinkauf', | |||
'97938aa5-c5a7-4d31-bdac-a19209ba432e' => 'Wareneinkauf', | |||
'dba64b05-85f7-4359-8e83-a2556a62eeac' => 'Innergemeinschaftlicher Erwerb', | |||
'3085632b-dd6b-4380-9425-e5821c1c9031' => 'Bezugsnebenkosten', | |||
'e9905c70-fd87-11e1-a21f-0800200c9a66' => 'Aufwandsminderungen', | |||
// Fremdleistungen | |||
'efa82f43-fd85-11e1-a21f-0800200c9a66' => 'Fremdleistungen', | |||
'205cae73-fd88-11e1-a21f-0800200c9a66' => 'Dienstleister', | |||
'205cae70-fd88-11e1-a21f-0800200c9a66' => 'Agenturen', | |||
'205cae71-fd88-11e1-a21f-0800200c9a66' => 'Freelancer/Freie Mitarbeiter', | |||
'205cae72-fd88-11e1-a21f-0800200c9a66' => 'Subunternehmer', | |||
'3ce7ec19-4828-4469-ac31-754a495cdbf1' => 'Bauleistungen §13b', | |||
'113476af-ac83-4bf2-941d-0daa37022945' => 'Fremdleistungen §13b', | |||
'6d49f842-54d9-4ebb-9c24-a25daac76203' => 'Fremdleistungen §13b nicht EU', | |||
// Personal | |||
'efa82f44-fd85-11e1-a21f-0800200c9a66' => 'Personal', | |||
'5bcf2ff2-fd88-11e1-a21f-0800200c9a66' => 'Löhne', | |||
'5bcf2ff4-fd88-11e1-a21f-0800200c9a66' => 'Prämie/Provision', | |||
'278d79f0-2d9a-4326-9ff7-28b666ae49ca' => 'Gehälter', | |||
'689092e1-cb82-4d93-8659-e9068cf97b78' => 'Geschäftsführergehälter', | |||
'a8f23059-48c2-4dc9-aeae-d5fb8438c476' => 'Geschäftsführergehälter GmbH-Gesellschafter', | |||
'5bcf2ff1-fd88-11e1-a21f-0800200c9a66' => 'Sozialabgaben', | |||
'ec6225a9-e6d5-40bd-89fb-0d944ea4cc98' => 'Soziale Abgaben für Minijobber', | |||
'93793549-d846-4c55-86b8-98902a2c47f3' => 'Berufsgenossenschaft', | |||
'94c7de01-6898-4e2b-803a-50e442149692' => 'Vermögenswirksame Leistungen', | |||
'5bcf2ff0-fd88-11e1-a21f-0800200c9a66' => 'Aushilfslöhne', | |||
'5bcf2ff3-fd88-11e1-a21f-0800200c9a66' => 'Pauschale Steuer für Aushilfen', | |||
'48806a21-87a2-4e4c-8ced-1857100091d4' => 'Pauschale Steuern für Minijobber', | |||
'8afe1a96-bb88-4740-922f-ac36dc897144' => 'Pauschale Steuer auf sonstige Bezüge', | |||
'7a7300b0-e588-4732-a88b-a09537bf49f4' => 'Pauschale Steuern für Gesellschafter-Geschäftsführer', | |||
// Raumkosten | |||
'2f47898b-ad5c-460b-93f2-8966c49cf6e3' => 'Raumkosten', | |||
'ccbd1972-fd88-11e1-a21f-0800200c9a66' => 'Miete/Pacht', | |||
'ccbd1970-fd88-11e1-a21f-0800200c9a66' => 'Heizung', | |||
'ccbd1973-fd88-11e1-a21f-0800200c9a66' => 'Strom, Wasser, Gas', | |||
'd5249d11-fd90-11e1-a21f-0800200c9a66' => 'Renovierung/Instandhaltung', | |||
'ccbd1974-fd88-11e1-a21f-0800200c9a66' => 'Müllgebühren', | |||
// Telefon/Internet | |||
'efa82f4b-fd85-11e1-a21f-0800200c9a66' => 'Telefon/Internet', | |||
'b3a1f840-fd90-11e1-a21f-0800200c9a66' => 'Festnetz', | |||
'b3a1f842-fd90-11e1-a21f-0800200c9a66' => 'Mobil', | |||
'b3a1f841-fd90-11e1-a21f-0800200c9a66' => 'Internet', | |||
// Reisen | |||
'efa82f49-fd85-11e1-a21f-0800200c9a66' => 'Reisen', | |||
'f9f05691-fd89-11e1-a21f-0800200c9a66' => 'Fahrtkosten', | |||
'f9f05692-fd89-11e1-a21f-0800200c9a66' => 'Öffentliche Verkehrsmittel', | |||
'f9f05693-fd89-11e1-a21f-0800200c9a66' => 'Taxi', | |||
'f9f05690-fd89-11e1-a21f-0800200c9a66' => 'Bahn-/Flugticket, Mietwagen', | |||
'f9f05694-fd89-11e1-a21f-0800200c9a66' => 'Übernachtungskosten', | |||
'4c4f9907-0379-408a-989b-22850d2fbcdc' => 'Frühstück', | |||
'9fb5e4b0-94ae-47f3-804f-5ed00e4aceb6' => 'Verpflegungsmehraufwendungen', | |||
'cf03a2b0-f838-474f-ac5e-67adb9b830c7' => 'Reise MA', | |||
'3620798f-ae06-4492-b775-1c87eb99247c' => 'Fahrtkosten MA', | |||
'b99b667f-bfee-41b9-8ec0-cee308bdacfd' => 'Übernachtung MA', | |||
'353e8c93-5f69-4476-887f-d48734ee2cc7' => 'Verpflegungsmehraufw. MA', | |||
// Fortbildung | |||
'5bc9acec-85af-48dd-a4c3-9ccc4ea6ac80' => 'Fortbildung', | |||
'16d04a27-fd91-11e1-a21f-0800200c9a66' => 'Seminar/Weiterbildung', | |||
// Beratung | |||
'efa85651-fd85-11e1-a21f-0800200c9a66' => 'Beratung', | |||
'f48154a0-fd90-11e1-a21f-0800200c9a66' => 'Rechtsanwalt', | |||
'f48154a1-fd90-11e1-a21f-0800200c9a66' => 'Steuerberater', | |||
'2bdc3fd5-3ef3-4732-b315-4fa2c1061994' => 'Buchführungskosten', | |||
'90999976-9851-491a-9b68-12f4078c219c' => 'Abschluss- und Prüfungskosten', | |||
// Miete/Leasing | |||
'efa82f45-fd85-11e1-a21f-0800200c9a66' => 'Miete/Leasing', | |||
'ccbd1971-fd88-11e1-a21f-0800200c9a66' => 'Leasing für Geräte', | |||
// Versicherungen/Beiträge | |||
'efa82f46-fd85-11e1-a21f-0800200c9a66' => 'Versicherungen/Beiträge', | |||
'f49d88d0-fd88-11e1-a21f-0800200c9a66' => 'Betriebshaftpflicht', | |||
'5ce0f8a0-fd89-11e1-a21f-0800200c9a66' => 'Firmenversicherung', | |||
'f49d88d2-fd88-11e1-a21f-0800200c9a66' => 'Rechtschutz', | |||
'f49d88d3-fd88-11e1-a21f-0800200c9a66' => 'Transportversicherung', | |||
'f49d88d1-fd88-11e1-a21f-0800200c9a66' => 'Innungs- und Verbandsbeiträge', | |||
// Werbung | |||
'efa82f48-fd85-11e1-a21f-0800200c9a66' => 'Werbung', | |||
'd22989b5-fd89-11e1-a21f-0800200c9a66' => 'Werbegeschenke/Sponsoring', | |||
'd22989b0-fd89-11e1-a21f-0800200c9a66' => 'Anzeigen Print- und Online', | |||
'd22989b1-fd89-11e1-a21f-0800200c9a66' => 'Dekoration', | |||
'd22989b2-fd89-11e1-a21f-0800200c9a66' => 'Geschäftspapier/Visitenkarten', | |||
'd22989b3-fd89-11e1-a21f-0800200c9a66' => 'Marketing', | |||
'd22989b4-fd89-11e1-a21f-0800200c9a66' => 'Messekosten', | |||
'01d94be1-ba15-4dd8-a8e2-e1d51eaab8f9' => 'Repräsentationskosten', | |||
// Zinsen/Gebühren | |||
'c3dc62f5-e382-4f34-a286-b06bda0b5e90' => 'Zinsen/Gebühren', | |||
'16d04a22-fd91-11e1-a21f-0800200c9a66' => 'Girokontozinsen', | |||
'16d04a23-fd91-11e1-a21f-0800200c9a66' => 'Kontoführung/Kartengebühr', | |||
'5921d420-fd91-11e1-a21f-0800200c9a66' => 'Darlehenszinsen', | |||
'5921d422-fd91-11e1-a21f-0800200c9a66' => 'Darlehensgebühren', | |||
// Gezahlte Vorsteuer | |||
'3da06950-a89f-4b3f-9932-0e627cdf6a34' => 'Gezahlte Vorsteuer', | |||
'f1c2c983-db43-4d91-b0b1-c9d8aa89adef' => 'Einfuhrumsatzsteuer', | |||
// Umsatzsteuer-Vorauszahlungen | |||
'222b6f72-fd92-11e1-a21f-0800200c9a66' => 'Umsatzsteuer-Vorauszahlungen', | |||
'e68b1ec8-3a46-4100-890b-01bc86cf8ada' => 'Umsatzsteuer-Vorauszahlungen 1/11', | |||
'ebbdd0f4-3bd4-4d2e-847f-8b68314f7ef6' => 'Umsatzsteuer-Vorjahr', | |||
// Beschränkt abziehbare Betriebsausgaben | |||
'efa82f4a-fd85-11e1-a21f-0800200c9a66' => 'Beschränkt abziehbare Betriebsausgaben', | |||
'934adb21-fd90-11e1-a21f-0800200c9a66' => 'Bewirtungskosten', | |||
'be378725-ff9e-4180-b72a-2effe6493bba' => 'Bewirtungskosten (nicht abziehbar)', | |||
'09b906eb-8e05-4ee7-88a5-8e49e6c4db72' => 'Geschenke', | |||
// Fahrzeug | |||
'efa82f47-fd85-11e1-a21f-0800200c9a66' => 'Fahrzeug', | |||
'9eaf6ff0-fd89-11e1-a21f-0800200c9a66' => 'Benzin', | |||
'9eaf6ff7-fd89-11e1-a21f-0800200c9a66' => 'Wagenpflege', | |||
'9eaf6ff1-fd89-11e1-a21f-0800200c9a66' => 'Inspektion/Reparatur', | |||
'9eaf6ff3-fd89-11e1-a21f-0800200c9a66' => 'KFZ-Versicherungen', | |||
'9eaf6ff4-fd89-11e1-a21f-0800200c9a66' => 'Leasing/Mietwagen', | |||
'9eaf6ff5-fd89-11e1-a21f-0800200c9a66' => 'Stellplatz/Garagenmiete', | |||
'1e541b97-42de-4eb2-abe7-0e208cf46f38' => 'Mietleasing KFZ', | |||
'9eaf6ff8-fd89-11e1-a21f-0800200c9a66' => 'Sonstige KFZ-Kosten', | |||
'79e1efd6-7103-46cf-99c2-0717cc60350b' => 'Mautgebühren', | |||
'5597e22b-7ce8-4686-b15d-c2a6caa12d3b' => 'Kosten betriebl. Nutzung KFZ im Privatvermögen', | |||
// Reparaturen | |||
'efa85650-fd85-11e1-a21f-0800200c9a66' => 'Reparaturen', | |||
'd5249d10-fd90-11e1-a21f-0800200c9a66' => 'Kleinmaterial', | |||
'd5249d12-fd90-11e1-a21f-0800200c9a66' => 'Wartung', | |||
'50ca159d-1155-4d9a-8f79-b013943c774e' => 'Anlagen und Maschinen', | |||
'd854ed5f-969a-4b5f-b13a-9679648aa988' => 'Sonstige Reparaturen', | |||
// Sonstige Ausgaben | |||
'16d04a28-fd91-11e1-a21f-0800200c9a66' => 'Sonstige Ausgaben', | |||
'16d04a21-fd91-11e1-a21f-0800200c9a66' => 'Bürobedarf', | |||
'16d04a24-fd91-11e1-a21f-0800200c9a66' => 'Porto', | |||
'16d04a29-fd91-11e1-a21f-0800200c9a66' => 'Zeitschriften/Bücher', | |||
'934adb20-fd90-11e1-a21f-0800200c9a66' => 'Betriebliche Besprechungen', | |||
'16d04a26-fd91-11e1-a21f-0800200c9a66' => 'Reinigung/Reinigungsmittel', | |||
'16d04a20-fd91-11e1-a21f-0800200c9a66' => 'Anschaffungen', | |||
'fb198cf9-79f2-407c-baeb-9d8aa9b98fd0' => 'Kosten der Warenabgabe', | |||
'26e4fa58-db12-443f-9e70-9a8081730c1c' => 'Verpackungsmaterial', | |||
'b49aae5f-4121-4262-b8bd-f49278b66423' => 'Lizenzen und Konzessionen', | |||
'9d92c0dc-8cea-4791-ab3b-90f913101d32' => 'Wartungskosten für Hard- und Software', | |||
'6a90d581-46ba-4b59-ba8f-e568a552e0c0' => 'Aufmerksamkeiten', | |||
'c1d7d464-0b42-4a7e-b6af-535b2eb4a2fd' => 'Mahngebühren', | |||
'61b6c617-d5b6-44ee-b43a-ac97b71f1bd8' => 'Rundungsdifferenzen', | |||
'207833b2-59fb-4185-b7b3-52ab9b944d59' => 'Währungsumrechnung', | |||
// Anlagevermögen | |||
'aa2d19a0-43e7-4330-a579-75c962254546' => 'Software', | |||
'e82f21da-c21b-44a0-8abb-cd805b62b231' => 'Technische Anlagen und Maschinen', | |||
'1b029e34-70ad-4869-95da-bc9454c8650c' => 'KFZ', | |||
'ff95af70-57e3-46a8-b6cb-0b03400d4879' => 'LKW', | |||
'281cd301-6e13-4d27-81c2-30f896e5bf1d' => 'Sonstige Transportmittel', | |||
'121188e5-61ec-4734-bcc2-282e4340bb33' => 'Werkzeuge', | |||
'60a5a91b-6b4a-485e-b610-232b423a161d' => 'Betriebs-und Geschäftsausstattung', | |||
'571e17ef-962d-4ec1-aedf-b166d876ebe1' => 'Ladeneinrichtung', | |||
'd0d633ec-dda7-4aa3-867c-96e7a0d97477' => 'Büroeinrichtung', | |||
'1b2d76c2-23a2-48c6-a717-7f9fecf99556' => 'Geringwertige Wirtschaftsgüter', | |||
// Steuern | |||
'9eaf6ff2-fd89-11e1-a21f-0800200c9a66' => 'KFZ-Steuer', | |||
'222b6f71-fd92-11e1-a21f-0800200c9a66' => 'Gewerbesteuer', | |||
'75c4dd86-9977-4624-bac8-620e7aa08dd2' => 'Körperschaftsteuer', | |||
'fcac6066-8597-4086-8544-b95c444738a2' => 'Solidaritätszuschlag', | |||
// Darlehen | |||
'efa85654-fd85-11e1-a21f-0800200c9a66' => 'Darlehen', | |||
'5921d421-fd91-11e1-a21f-0800200c9a66' => 'Tilgung', | |||
// Privat | |||
'efa85653-fd85-11e1-a21f-0800200c9a66' => 'Privat', | |||
'16d04a25-fd91-11e1-a21f-0800200c9a66' => 'Privatentnahmen', | |||
'35bfb902-6845-45aa-8f90-747226f1e632' => 'Gesellschafter-Entnahmen', | |||
'222b6f70-fd92-11e1-a21f-0800200c9a66' => 'Einkommensteuer', | |||
'328a41b4-58d7-4595-8840-1b96ad398f15' => 'Versicherungen', | |||
'72b9ed0d-95fa-4be7-8035-1f96d28b9725' => 'Spenden', | |||
'800030a3-b5e8-43ef-b1a1-62046d65f1a3' => 'Krankheitskosten', | |||
// Zu zahlen | |||
'ec472a04-9712-4ebb-9c8d-981941a456e5' => 'Zu zahlen', | |||
'4708d50c-f3a9-4a27-98c4-d37502e3b45c' => 'Lohn-und Kirchensteuer', | |||
'27c9577e-9472-47cd-818e-a0cbb042bf82' => 'Sozialversicherungsbeiträge', | |||
'db9689f7-49d6-4f6f-9cc4-93804f7c674a' => 'Vermögensbildung', | |||
'fa4aadaa-8f1f-4121-99b4-bac9ad7c9bc9' => 'Verrechnung Lohn/Gehalt', | |||
'cd3ea3e5-b681-496b-9886-7f8a8ab0397a' => 'Nettogehälter', | |||
// Zu prüfen | |||
'8d2e71c6-09d5-439a-a295-a9e71661afcd' => 'Zu prüfen', | |||
'62e21a0d-af46-4674-bfa0-60bc2607fa17' => 'Durchlaufende Posten', | |||
'dd56efd2-6c62-40e4-9d9e-cba7b0045911' => 'Geldtransit', | |||
] | |||
]; | |||
== One-Stop-Shop (OSS) Kategorien == | |||
# Deutsche Umsatzsteuer | |||
Kategorie: Fernverkauf (Fernverkauf steht für Verkauf von Waren) | |||
categoryId: 7c112b66-0565-479c-bc18-5845e080880a | |||
Steuersätze: Es gelten die deutschen Steuersätze | |||
Kategorie: Elektronische Dienstleistungen (ehemals MOSS) | |||
categoryId: d73b880f-c24a-41ea-a862-18d90e1c3d82 | |||
Steuersätze: Es gelten die deutschen Steuersätze | |||
# EU-Zielland-Steuer | |||
Kategorie: Fernverkauf in EU-Land steuerpflichtig | |||
categoryId: 4ebd965a-7126-416c-9d8c-a5c9366ee473 | |||
Steuersätze: Es gelten Steuersätze des Ziellandes | |||
Kategorie: Elektronische Dienstleistung in EU-Land steuerpflichtig (ehemals MOSS) | |||
categoryId: efa82f40-fd85-11e1-a21f-0800200c9a66 | |||
Steuersätze: Es gelten Steuersätze des Ziellandes | |||
= Webhook Anfragen = | = Webhook Anfragen = |
Aktuelle Version vom 27. Februar 2024, 08:57 Uhr
Übersicht & Informationen
PHP Client für Lexoffice REST API
Wir lieben Automatisierung und die nahtlose Verzahnung von Systemen!
Lexoffice stellt seinen Kunden eine öffentliche API-Schnittstelle zur Verfügung über die bestehende Systeme integriert oder Prozesse automatisiert werden können.
Für diesen Ansatz haben wir einen PHP-Client entwickelt und stellen diesen kostenfrei zur Verfügung.
Alle weiteren Informationen finden Sie auf unserer Projektseite.
Baebeca Solutions bei lexoffice.de
- lexoffice Integrationspartner
- lexoffice Softwarepartner
- Offizielle Lexoffice API-Dokumentation
Download
Die aktuelle Version können Sie jeweils in unserem Github Repository herunterladen: https://github.com/Baebeca-Solutions/lexoffice-php-api
Lizenz
Unsere Software wurde unter der "GNU Affero General Public License v3.0" Lizenz veröffentlicht. Dies bedeutet, dass Sie unsere Software gerne in Ihren Projekten und Produkten nutzen dürfen, solange Sie Ihr Projekt dann ebenso Quelloffen unter den in der Lizenz genannten Rahmenbedingungen zur Verfügung stellen.
Wenn Sie Ihre Lösung nicht veröffentlichen möchten, Support benötigen, individuelle Erweiterungen benötigen oder dieses Projekt einfach Unterstützen möchten, können Sie für 99,- EUR/Netto eine lifetime Nutzungslizenz erhalten. Setzten Sie sich diesbezüglich bitte kurz mit uns in Verbindung.
Support
An wen kann ich mich wenden, wenn ich Probleme oder Fragen habe?
Für diese Frage ist entscheidend, ob Sie eine Nutzungslizenz für unsere lexoffice-php-api erworben haben oder die kostenlose Variante nutzen.
- Sofern eine Nutzungslizenz vorhanden ist, können sich jederzeit per Mail an support@baebeca.de wenden und erhalten vorrangigen Support.
- Wenn Sie die kostenlose Version nutzen bitten wir Sie auf Github einen issue zu erstellen.
Lexoffice API Account erstellen
Erstellen Sie in Ihrem Lexoffice Account einen API Key.
Einstellungen :: Erweiterungen :: lexoffice Public API :: "Schlüssel neu erstellen"
Mehrwertsteuersenkung - Konjunkturpaket 01.07.2020 - 31.12.2020
- https://www.lexoffice.de/mehrwertsteuer-rest-api/
- https://developers.lexoffice.io/docs/#faq-valid-tax-rates
One-Stop-Shop (OSS) ab 01.07.2021
- Für den Voucher-Import reicht es aus die Methode get_needed_voucher_booking_id() zu nutzen.
- https://support.lexoffice.de/de-form/articles/5207137-one-stop-shop-eu-regelung-belege-an-privatpersonen-im-eu-ausland
Rate-Limit
Lexoffice hat ein Rate-Limit von 2 Anfragen pro Sekunde. Siehe dazu: https://developers.lexoffice.io/docs/#api-rate-limits
Dieses Rate-Limit wird automatisch erkannt und der Request wird nach einem Sleep von "Sekunden * Anzahl Versuche" erneut abgesetzt.
Mithilfe von $lexoffice->configure_rate_limit(bool $repeat = true, int $seconds_to_sleep = 1, int $max_tries = 10): void
kann man das Verhalten parametrisieren.
Zusätzlich besteht die Möglichkeit via configure_rate_limit_callable(callable $callback = null) : void
eine Callbackfunktion mitzugeben, die jedes Mal getriggert wird, wenn ein Rate-Limit getroffen wurde. Es wird dann ein bool Parameter mitgegeben ob der Aufruf noch einmal versucht wird.
Klasse einbinden
// include the class file, check the correct folder
require_once (__DIR__.'/lexoffice-php-api.php');
// initiate client with your settings
$lexoffice = new lexoffice_client(array(
'api_key' => 'xyz',
));
Start Parameter
- api_key [string]
- API Schlüssel
- callback [string]
- Ihre Standard Callback URL für Webhooks von Lexoffice
- ssl_verify [bool] (default true)
- Soll die SSL verbindung zu Lexoffice validiert werden
Methoden
Account
Account abfragen
$lexoffice->get_profile() : object
Beispiel Rückgabe:
{
"organizationId": "42b1fbdd-c4e0-4bb4-8c20-1d3d0b9432e8",
"companyName": "Testfirma GmbH",
"created": {
"userName": "Frau Erika Musterfrau",
"userEmail": "erika.musterfrau@testfirma.de",
"date": "2017-01-03T13:15:45+0100"
},
"connectionId": "3dea098a-fae5-4458-a85c-f97965966c25",
"features": [
"cashbox"
],
"subscriptionStatus": "active",
"taxType": "net",
"isSmallBusiness": false
}
Rechnungen
Rechnung abfragen
$lexoffice->get_invoice( string $uuid ) : object
- uuid
- Die eindeutige uuid des Eintrages der abgefragt werden soll
Alle Rechnungen abfragen
$lexoffice->get_invoices_all() : object
Die letzten n Rechnungen abfragen
$lexoffice->get_last_invoices(int $count) : object
Rechnung PDF herunterladen
legacy function - will be removed in futere releases, use get_pdf($type, $uuid, $filename) instead
$lexoffice->get_invoice_pdf( string $uuid, string $filename) : bool
- uuid
- Die eindeutige uuid des Eintrages der abgefragt werden soll
- filename
- Der lokale Dateiname an dem das PDF abgelegt werden soll
Rechnung anlegen
$lexoffice->create_invoice( array $data [, bool $finalized = false ] ) : object
- data
- Ein Array der Rechnungsdaten nach der nötigen Lexoffice Formatierung
- Beispiel
array(
'voucherDate' => date(DATE_RFC3339_EXTENDED),
'introduction' => 'Einleitungstext',
'remark' => "Fußzeile\r\nMehrzeilig",
'address' => array(
#'contactId' => '<id>',
'name' => 'Frau Jane Doe',
'street' => 'Str. 1',
'zip' => '12345',
'city' => 'Stadt',
'countryCode' => 'DE',
),
'lineItems' => array(
array(
'type' => 'custom',
'name' => 'Produktname',
'description' => 'Beschreibung',
'quantity' => 1,
'unitName' => 'Stück',
'unitPrice' => array(
'currency' => 'EUR',
'netAmount' => 10.99,
'taxRatePercentage' => 19,
),
#'discountPercentage' => 0,
),
),
'totalPrice' => array(
'currency' => 'EUR',
#'totalDiscountAbsolute' => 0,
#'totalDiscountPercentage' => 0,
),
'taxConditions' => array(
'taxType' => 'net',
),
'shippingConditions' => array(
'shippingDate' => date('Y-m-d').'T00:00:01.000+02:00',
'shippingType' => 'delivery',
),
'paymentConditions' => array(
'paymentTermLabel' => 'Vorkasse',
'paymentTermDuration' => 1,
),
)
- finalized
- Entscheidet ob die Rechnung fertiggestellt werden soll.
Serienrechnungen
Serienrechnung abfragen
$lexoffice->get_recurring_template( string $uuid ) : object
- uuid
- Die eindeutige uuid des Eintrages der abgefragt werden soll
Alle Serienrechnungen abfragen
$lexoffice->get_recurring_templates_all() : object
Gutschriften
Gutschrift abfragen
$lexoffice->get_creditnote( string $uuid ) : object
- uuid
- Die eindeutige uuid der Gutschrift die abgefragt werden soll
Gutschrift anlegen
$lexoffice->create_creditnote( array $data [, bool $finalized = false, string $linked_invoice_id = '' ] ) : object
- data
- Ein Array der Gutschriftsdaten nach der nötigen Lexoffice Formatierung
- Beispiel
array(
'voucherDate' => date(DATE_RFC3339_EXTENDED),
'introduction' => 'Rechnungskorrektur',
'remark' => "Fußzeile\r\nMehrzeilig",
'address' => array(
#'contactId' => '<id>',
'name' => 'Frau Jane Doe',
'street' => 'Str. 1',
'zip' => '12345',
'city' => 'Stadt',
'countryCode' => 'DE',
),
'lineItems' => array(
array(
'type' => 'custom',
'name' => 'Produktname',
'description' => 'Beschreibung',
'quantity' => 1,
'unitName' => 'Stück',
'unitPrice' => array(
'currency' => 'EUR',
'netAmount' => 10.99,
'taxRatePercentage' => 19,
),
#'discountPercentage' => 0,
),
),
'totalPrice' => array(
'currency' => 'EUR',
#'totalDiscountAbsolute' => 0,
#'totalDiscountPercentage' => 0,
),
'taxConditions' => array(
'taxType' => 'net',
)
)
- finalized
- Entscheidet ob die Gutschrift fertiggestellt werden soll.
- linked_invoice_id
- Eine lexoffice UUID einer offenen Rechnung für die eine Gutschrift erstellt wird.
Angebote
Angebot abfragen
$lexoffice->get_quotation( string $uuid ) : object
- uuid
- Die eindeutige uuid des Angebotes das abgefragt werden soll
Angebot anlegen
$lexoffice->create_quotation( array $data [, bool $finalized = false ] ) : object
- data
- Ein Array der Angebotsdaten nach der nötigen Lexoffice Formatierung
- Beispiel
array(
'voucherDate' => substr(date('c'), 0, 19).'.000'.substr(date('c'), 19),
'expirationDate' => substr(date('c'), 0, 19).'.000'.substr(date('c'), 19),
'introduction' => 'Einleitungstext',
'remark' => "Fußzeile\r\nMehrzeilig",
'address' => array(
#'contactId' => '<id>',
'name' => 'Frau Jane Doe',
'street' => 'Str. 1',
'zip' => '12345',
'city' => 'Stadt',
'countryCode' => 'DE',
),
'lineItems' => array(
array(
'type' => 'custom',
'name' => 'Produktname',
'description' => 'Beschreibung',
'quantity' => 1,
'unitName' => 'Stück',
'unitPrice' => array(
'currency' => 'EUR',
'netAmount' => 10.99,
'taxRatePercentage' => 19,
),
#'discountPercentage' => 0,
),
),
'totalPrice' => array(
'currency' => 'EUR',
#'totalDiscountAbsolute' => 0,
#'totalDiscountPercentage' => 0,
),
'taxConditions' => array(
'taxType' => 'net',
),
'shippingConditions' => [
'shippingDate' => date(DATE_RFC3339_EXTENDED),
'shippingType' => 'delivery',
],
'paymentConditions' => [
'paymentTermLabel' => 'Vorkasse',
'paymentTermDuration' => 1,
],
)
- finalized
- Entscheidet ob das ANgebot fertiggestellt werden soll.
Auftragsbestätigungen
Auftragsbestätigung abfragen
$lexoffice->get_orderconfirmation( string $uuid ) : object
- uuid
- Die eindeutige uuid der Auftragsbestätigung die abgefragt werden soll
Auftragsbestätigung anlegen
$lexoffice->create_orderconfirmation( array $data ) : object
- data
- Ein Array der Auftragsbestätigungsdaten nach der nötigen Lexoffice Formatierung
- Beispiel
array(
'voucherDate' => date(DATE_RFC3339_EXTENDED),
'introduction' => 'Einleitungstext',
'remark' => "Fußzeile\r\nMehrzeilig",
'address' => array(
#'contactId' => '<id>',
'name' => 'Frau Jane Doe',
'street' => 'Str. 1',
'zip' => '12345',
'city' => 'Stadt',
'countryCode' => 'DE',
),
'lineItems' => array(
array(
'type' => 'custom',
'name' => 'Produktname',
'description' => 'Beschreibung',
'quantity' => 1,
'unitName' => 'Stück',
'unitPrice' => array(
'currency' => 'EUR',
'netAmount' => 10.99,
'taxRatePercentage' => 19,
),
#'discountPercentage' => 0,
),
),
'totalPrice' => array(
'currency' => 'EUR',
#'totalDiscountAbsolute' => 0,
#'totalDiscountPercentage' => 0,
),
'taxConditions' => array(
'taxType' => 'net',
),
'shippingConditions' => array(
'shippingDate' => date('Y-m-d').'T00:00:01.000+02:00',
'shippingType' => 'delivery',
),
'paymentConditions' => array(
'paymentTermLabel' => 'Vorkasse',
'paymentTermDuration' => 1,
),
)
Lieferschein
Lieferschein abfragen
$lexoffice->get_deliverynote( string $uuid ) : object
- uuid
- Die eindeutige uuid des Lieferscheins der abgefragt werden soll
Lieferschein anlegen
$lexoffice->create_delivery_note( array $data ) : object
- data
- Ein Array der Lieferscheindaten nach der nötigen Lexoffice Formatierung
- Beispiel
array(
'voucherDate' => date(DATE_RFC3339_EXTENDED),
'introduction' => 'Einleitungstext',
'remark' => "Fußzeile\r\nMehrzeilig",
'address' => array(
#'contactId' => '<id>',
'name' => 'Frau Jane Doe',
'street' => 'Str. 1',
'zip' => '12345',
'city' => 'Stadt',
'countryCode' => 'DE',
),
'lineItems' => array(
array(
'type' => 'custom',
'name' => 'Produktname',
'description' => 'Beschreibung',
'quantity' => 1,
'unitName' => 'Stück',
'unitPrice' => array(
'currency' => 'EUR',
'netAmount' => 10.99,
'taxRatePercentage' => 19,
),
#'discountPercentage' => 0,
),
),
'totalPrice' => array(
'currency' => 'EUR',
#'totalDiscountAbsolute' => 0,
#'totalDiscountPercentage' => 0,
),
'taxConditions' => array(
'taxType' => 'net',
),
'shippingConditions' => array(
'shippingDate' => date('Y-m-d').'T00:00:01.000+02:00',
'shippingType' => 'delivery',
),
'paymentConditions' => array(
'paymentTermLabel' => 'Vorkasse',
'paymentTermDuration' => 1,
),
)
Belege
Beleg anlegen
$lexoffice->create_voucher( array $data ) : object
- Paramater
- data
- Ein Array der Belegdaten nach der nötigen Lexoffice Formatierung
Beleg abfragen
$lexoffice->get_voucher( string $uuid ) : object
- Paramater
- uuid
- Die eindeutige uuid des Beleges der abgefragt werden soll
Belege abfragen
$lexoffice->get_vouchers( string $type = 'invoice,creditnote,orderconfirmation', string $state = 'draft,open,paid,paidoff,voided,transferred', string $archived = 'both', string $date_from = '', string $date_to = '') : object
- type
- Einen oder mehrere Typen von Belegen (komma getrennt) die abgefragt werden sollen
- state
- Status der Belege die abgefragt werden sollen
- archived
- "both", "true" oder "false" als String ob archivierte/nicht archivierte Belege ausgegeben werden sollen
- date_from
- Datum (Format YYYY-MM-DD) ab wann einschließlich abgefragt werden soll
- date_to
- Datum (Format YYYY-MM-DD) bis wann einschließlich abgefragt werden soll
Belegbild hochladen (nicht zugeordnet)
$lexoffice->upload_file($file) : object
- Parameter
- file
- Der Pfad zur Datei die hochgeladen werden soll
- Rückgabe
- id
- Die eindeutige Datei-ID von lexoffice
- Beispiel Anfrage
$lexoffice->upload_file(__DIR__.'/invoice.pdf');
- Beispiel Rückgabe
stdClass Object (
[id] => 221fd5ed-5547-4bd3-b7c2-9796c1a0e4a6
)
Beleg hochladen (zugeordnet)
$lexoffice->upload_voucher($uuid, $file) : object
- Parameter
- uuid
- Die ID des Beleges dem der Upload zugeordnet werden soll
- file
- Der Pfad zur Datei die hochgeladen werden soll
- Rückgabe
- id
- Die eindeutige Datei-ID von lexoffice
Beleg Dateien herunterladen
$lexoffice->get_voucher_files(string $uuid, string $filename_prefix) : array
- Parameter
- uiui
- Die ID des Beleges dessen Dateien heruntergeladen werden sollen
- filename_prefix
- Der Dateipfad inkl. eines Dateiprefixes.
- Rückgabe
Ein Array der Dateinamen
- Beispiel Anfrage
$lexoffice->get_voucher_files($uuid, '/files/IN_1234');
- Beispiel Rückgabe
array (
[0] => /files/IN_1234_1.jpg
[1] => /files/IN_1234_2.png
[2] => /files/IN_1234_3.pdf
)
Kontakte
Kontakt abfragen
$lexoffice->get_contact( string $uuid ) : object
- Paramater
- uuid
- Die eindeutige uuid des Eintrages der abgefragt werden soll
Kontakt suchen
Bitte beachte das lexoffice stets eine Suche nach "contains" macht. Eine Suche nach hans@hans.de liefert einen Treffer für den Kontakt hans@hans.de.google.com
$lexoffice->search_contact( array $filter, bool $respect_wildcards = false ) : object
- Paramater
- filter
- Array bestehend aus den möglichen Filtern. Mehere Filter werden mit einem UND verknüpft.
- email (mindestens 3 Zeichen)
- name (mindestens 3 Zeichen)
- number
- customer (true/false)
- vendor (true/false)
- Array bestehend aus den möglichen Filtern. Mehere Filter werden mit einem UND verknüpft.
- wildcards
- Bool | Wenn true werden die Zeichen "_" (ein Zeichen) und "%" (mehrere Zeichen) als Wildcards genutzt, andernfalls im Inhalt als Zeichen erwartet.
- Beispiel Anfrage
$lexoffice->search_contact(array(
'email' => '',
'name' => 'John Doe',
'number' => '',
'customer' => '',
'vendor' => '',
));
Alle Kontakte abfragen
$lexoffice->get_contacts_all() : object
Kontakt anlegen
$lexoffice->create_contact( array $data) : object
- Parameter
- data
- Ein Array der Kontaktdaten nach der nötigen Lexoffice Formatierung
- Beispiel Anfrage
$lexoffice->create_contact(array(
'version' => 0,
'roles' => array(
'customer' => array(
'number' => '',
),
),
'company' => array(
'name' => 'Baebeca Solutions GmbH',
'street' => 'Genklerhardt 6',
'zip' => '51647',
'city' => 'Gummersbach',
'countryCode' => 'DE',
'contactPersons' => array(
array(
'salutation' => 'Herr',
'firstName' => 'Jon',
'lastName' => 'Doe',
'emailAddress' =>'support@baebeca.de',
'phoneNumber' => '022619202930',
)
),
),
'addresses' => array(
'billing' => array(
array(
'street' => 'Genklerhardt 6',
'zip' => '51647',
'city' => 'Gummersbach',
'countryCode' => 'DE',
),
),
'shipping' => array(
array(
'street' => 'Genklerhardt 6',
'zip' => '51647',
'city' => 'Gummersbach',
'countryCode' => 'DE',
),
),
),
'emailAddresses' => array(
'business' => array(
'support@baebeca.de'
),
),
'phoneNumbers' => array(
'business' => array(
'022619202930'
),
),
'note' => '',
));
Kontakt aktualisieren
$lexoffice->update_contact( string $uuid, array $data) : object
- Parameter
- uuid
- Die eindeutige uuid des Eintrages der abgefragt werden soll
- data
- Ein Array der Kontaktdaten nach der nötigen Lexoffice Formatierung
Events / Webhooks
Event anlegen
$lexoffice->create_event( string $event [, bool $callback = false ] ) : array|bool
- event
- Mögliche sind alle von Lexoffice angebotenen Events.
- callback
- Die Callback URL für diesen Aufruf. Wenn keine angegeben wird, wird die Standard URL aus der initialisierung genutzt.
Aktives Event abfragen
$lexoffice->get_event( string $uuid ) : array
- uuid
- Die eindeutige uuid des Eintrages der abgefragt werden soll
Alle aktiven Events abfragen
$lexoffice->get_events_all() : object
Event löschen
$lexoffice->delete_event( string $iiud ) : object
- uuid
- Die ID eines zuvor erstellten Events.
Steuern
Kleinunternehmer
$lexoffice->is_tax_free_company(): bool
EU - Innergemeinschaftlicher Raum
$lexoffice->is_european_member(string $country_code, int $date): bool
- $country_code
- 2-Stelliger Country Code des Rechnungslandes
- $date
- Timestamp Rechnungsdatum
Buchungskategorie bestimmen
$lexoffice->get_needed_voucher_booking_id(float $taxrate, string $country_code, int $date, bool $euopean_vatid, bool $b2b_business, bool $physical_good = true): string
- $taxrate
- Steuersatz der verwendet werden soll (Wird auf Gültigkeit geprüft)
- $country_code
- 2-Stelliger Country Code des Rechnungslandes
- $date
- Timestamp Rechnungsdatum
- $euopean_vatid
- Verfügt man über die Kunden UST-ID
- $b2b_business
- Handelt es sich um einen Endkunden oder Geschäftskunden
- $physical_good
Wird physikalische Ware oder digitale Dienstleistung verkauft
Abfrage der möglichen Steuersätze
$lexoffice->get_taxrates(string $country_code, int $date): array
- $country_code
- 2-Stelliger Country Code des Rechnungslandes
- $date
- Timestamp Rechnungsdatum
Prüfung Steuersatz
$lexoffice->check_taxrate(float $taxrate, string $country_code, int $date): bool
- $taxrate
- Der zu prüfende Steuersatz
- $country_code
- 2-Stelliger Country Code des Rechnungslandes
- $date
- Timestamp Rechnungsdatum
One-Stop-Shop (OSS) / Steuer Methoden
OSS Einstellungen prüfen
$lexoffice->is_oss_needed(string $country_code, int $date)
- $country_code
- 2-Stelliger Country Code des Rechnungslandes
- $date
- Timestamp Rechnungsdatum
Prüfung OSS Voucher Kategorie
$lexoffice->get_oss_voucher_category(string $country_code, int $date, int $booking_category = 1, float $taxrate = 0): string
- $country_code
- 2-Stelliger Country Code des Rechnungslandes
- $date
- Timestamp Rechnungsdatum
- $booking_category
- Angabe welche Buchungskategorie genutzt werden soll
- 1 => Fernverkauf
- 2 => Elektronische Dienstleistung
- $taxrate
- Genutzter Steuersatz in Buchung
Sonstiges
PDFs herunterladen
$lexoffice->get_pdf(string $type, string $uuid, string $filename): bool
- type
- Die Art des Beleges. Möglich Varianten sind: "invoices", "credit-notes"
- uuid
- Die eindeutige uuid des Eintrages der abgefragt werden soll
- filename
- Der lokale Dateiname an dem das PDF abgelegt werden soll
Voucher Kategorien
Bei zu erstellenden Vouchers, muss ein Buchungskonto angegeben werden.
- incoming
- Ausgangsbelege (eingehender Geldfluß)
- outgoing
- Eingangsbelege (ausgehender Geldfluß)
private $booking_categories = [ 'incoming' => [ // Einnahmen '8f8664a1-fd86-11e1-a21f-0800200c9a66' => 'Einnahmen', '8f8664a0-fd86-11e1-a21f-0800200c9a66' => 'Dienstleistung', '8f8664a4-fd86-11e1-a21f-0800200c9a66' => 'Honorar/Gage', '8f8664a5-fd86-11e1-a21f-0800200c9a66' => 'Geräteverleih', '8f8664a6-fd86-11e1-a21f-0800200c9a66' => 'Prämien', '8f8664a7-fd86-11e1-a21f-0800200c9a66' => 'Provision/Courtage', '8f8664a8-fd86-11e1-a21f-0800200c9a66' => 'Warenverkäufe', '8f8664a9-fd86-11e1-a21f-0800200c9a66' => 'Wartung', '8f8664a3-fd86-11e1-a21f-0800200c9a66' => 'Erlösminderungen', 'be32ceb3-684a-485e-b628-4bcc748bac4b' => 'Bauleistungen §13b', '380a20cb-d04c-426e-b49c-84c22adfa362' => 'Fremdleistungen §13b', '7a1efa0e-6283-4cbf-9583-8e88d3ba5960' => 'Einnahmen als Kleinunternehmer', '9075a4e3-66de-4795-a016-3889feca0d20' => 'Innergemeinschaftliche Lieferung', 'ef5b1a6e-f690-4004-9a19-91276348894f' => 'Dienstleistungen an Drittländer', '93d24c20-ea84-424e-a731-5e1b78d1e6a9' => 'Ausfuhrlieferungen an Drittländer', // Sonstige Einnahmen '27758e6b-220a-4ad4-98a0-96e1f17e2783' => 'Forderungen gegenüber Krankenkassen aus Aufwendungsausgleichsgesetz', 'cfddcc50-fd86-11e1-a21f-0800200c9a66' => 'Sonstige Einnahmen', 'cfddcc52-fd86-11e1-a21f-0800200c9a66' => 'Miete/Pacht', 'cfddcc53-fd86-11e1-a21f-0800200c9a66' => 'Patent- und Lizenzverträge', '4cef8d07-b757-43eb-8dd8-da0c947800ff' => 'Mahngebühren', '5f1c4290-ad14-4487-b6f9-cbb2aff5efe2' => 'Zinserträge', 'aba9020f-d0a6-47ca-ace6-03d6ed492351' => 'Rundungsdifferenzen', 'c9eebb77-3f62-4ffa-99af-887c345a4a02' => 'Währungsumrechnung', 'b01910ba-bcdd-4465-865e-3ffe0159f193' => 'Erstattungen Aufwendungsausgleichsgesetz', // Vereinnahmte Umsatzsteuer 'd9bc790d-1a26-40a6-8b32-e5ef7c8b4d52' => 'Umsatzsteuer-Forderungen', // Umsatzsteuer-Erstattungen 'af1a07f3-8ce4-47dc-8c82-263960c2442d' => 'Umsatzsteuer-Vorauszahlungen', '487ce31c-4db6-40d2-b192-3485b5ae5c6e' => 'Umsatzsteuer-Vorjahr', // Anlagevermögen 'c5430e38-6daa-46e7-99d5-a65fd737338f' => 'Software', 'b32709ec-08c2-4d3f-8c29-4f8da6e03541' => 'Technische Anlagen und Maschinen', '4f01e761-d912-441f-ad1a-1c1d2d590a81' => 'KFZ', '13efe6dc-c3a3-4d6b-a793-81a1c0d78ece' => 'LKW', '21027249-d7c3-455f-9b27-88cfe23cb14f' => 'Sonstige Transportmittel', '78361a84-43e6-4643-84ce-7c4925e30a7f' => 'Werkzeuge', 'd8f6b5c4-62c4-4ed8-8deb-27eb284de06d' => 'Betriebs-und Geschäftsausstattung', 'f87b5aa8-aa1f-49bb-b5af-7fc6d52c0941' => 'Ladeneinrichtung', 'fe4ed5d8-8e69-4d10-923e-525948ea34df' => 'Büroeinrichtung', 'ec2ec6e5-217f-4e59-a3bc-ebd5562c3f50' => 'Geringwertige Wirtschaftsgüter', // Darlehen '4ae5384e-438e-4466-9c9f-338096abac58' => 'Darlehen', 'b9439764-a201-4a5c-84f4-2ae20c8bd40d' => 'Aufnahme', '89c3d29c-5896-4747-8cbb-9e44cb269946' => 'Aufnahme Gesellschafter', '097c0c6f-8fb0-4277-9d4e-f36bb91a0737' => 'Tilgung Gesellschafter', // Privat '5461e150-10d7-492f-968d-33413ff63a53' => 'Privat', 'cfddcc54-fd86-11e1-a21f-0800200c9a66' => 'Privateinlagen', 'bc25f5d5-c2c7-4394-b5ae-f422a779d68a' => 'Gesellschafter-Einlagen', 'ef5afd88-4a48-4582-8934-9b60fd9ad9d5' => 'Einkommensteuer', '6d0a1338-803c-4188-86a1-ba0b2f88e2f3' => 'Versicherungen', '55e8b902-671e-49a4-b4bf-7e3b6f9ad305' => 'Spenden', 'db6c9e4f-bf42-424d-ab36-a1c0977c8375' => 'Krankheitskosten', // Kapital 'a08696c7-ee18-48da-aba6-e5ba07b76082' => 'Ausstehende Einlagen', // Zu prüfen '32b4c1d5-050f-4b80-9377-a8e98384ebee' => 'Zu prüfen', 'eeaffbf8-d006-4c8c-b035-992817499eb4' => 'Durchlaufende Posten', '6656bbd4-f278-4a3d-8e22-c8543abfe906' => 'Geldtransit', ], 'outgoing' => [ // Material/Waren 'efa82f42-fd85-11e1-a21f-0800200c9a66' => 'Material/Waren', '97704fd4-0e83-4c5b-a09c-1b4289644d10' => 'Materialeinkauf', '97938aa5-c5a7-4d31-bdac-a19209ba432e' => 'Wareneinkauf', 'dba64b05-85f7-4359-8e83-a2556a62eeac' => 'Innergemeinschaftlicher Erwerb', '3085632b-dd6b-4380-9425-e5821c1c9031' => 'Bezugsnebenkosten', 'e9905c70-fd87-11e1-a21f-0800200c9a66' => 'Aufwandsminderungen', // Fremdleistungen 'efa82f43-fd85-11e1-a21f-0800200c9a66' => 'Fremdleistungen', '205cae73-fd88-11e1-a21f-0800200c9a66' => 'Dienstleister', '205cae70-fd88-11e1-a21f-0800200c9a66' => 'Agenturen', '205cae71-fd88-11e1-a21f-0800200c9a66' => 'Freelancer/Freie Mitarbeiter', '205cae72-fd88-11e1-a21f-0800200c9a66' => 'Subunternehmer', '3ce7ec19-4828-4469-ac31-754a495cdbf1' => 'Bauleistungen §13b', '113476af-ac83-4bf2-941d-0daa37022945' => 'Fremdleistungen §13b', '6d49f842-54d9-4ebb-9c24-a25daac76203' => 'Fremdleistungen §13b nicht EU', // Personal 'efa82f44-fd85-11e1-a21f-0800200c9a66' => 'Personal', '5bcf2ff2-fd88-11e1-a21f-0800200c9a66' => 'Löhne', '5bcf2ff4-fd88-11e1-a21f-0800200c9a66' => 'Prämie/Provision', '278d79f0-2d9a-4326-9ff7-28b666ae49ca' => 'Gehälter', '689092e1-cb82-4d93-8659-e9068cf97b78' => 'Geschäftsführergehälter', 'a8f23059-48c2-4dc9-aeae-d5fb8438c476' => 'Geschäftsführergehälter GmbH-Gesellschafter', '5bcf2ff1-fd88-11e1-a21f-0800200c9a66' => 'Sozialabgaben', 'ec6225a9-e6d5-40bd-89fb-0d944ea4cc98' => 'Soziale Abgaben für Minijobber', '93793549-d846-4c55-86b8-98902a2c47f3' => 'Berufsgenossenschaft', '94c7de01-6898-4e2b-803a-50e442149692' => 'Vermögenswirksame Leistungen', '5bcf2ff0-fd88-11e1-a21f-0800200c9a66' => 'Aushilfslöhne', '5bcf2ff3-fd88-11e1-a21f-0800200c9a66' => 'Pauschale Steuer für Aushilfen', '48806a21-87a2-4e4c-8ced-1857100091d4' => 'Pauschale Steuern für Minijobber', '8afe1a96-bb88-4740-922f-ac36dc897144' => 'Pauschale Steuer auf sonstige Bezüge', '7a7300b0-e588-4732-a88b-a09537bf49f4' => 'Pauschale Steuern für Gesellschafter-Geschäftsführer', // Raumkosten '2f47898b-ad5c-460b-93f2-8966c49cf6e3' => 'Raumkosten', 'ccbd1972-fd88-11e1-a21f-0800200c9a66' => 'Miete/Pacht', 'ccbd1970-fd88-11e1-a21f-0800200c9a66' => 'Heizung', 'ccbd1973-fd88-11e1-a21f-0800200c9a66' => 'Strom, Wasser, Gas', 'd5249d11-fd90-11e1-a21f-0800200c9a66' => 'Renovierung/Instandhaltung', 'ccbd1974-fd88-11e1-a21f-0800200c9a66' => 'Müllgebühren', // Telefon/Internet 'efa82f4b-fd85-11e1-a21f-0800200c9a66' => 'Telefon/Internet', 'b3a1f840-fd90-11e1-a21f-0800200c9a66' => 'Festnetz', 'b3a1f842-fd90-11e1-a21f-0800200c9a66' => 'Mobil', 'b3a1f841-fd90-11e1-a21f-0800200c9a66' => 'Internet', // Reisen 'efa82f49-fd85-11e1-a21f-0800200c9a66' => 'Reisen', 'f9f05691-fd89-11e1-a21f-0800200c9a66' => 'Fahrtkosten', 'f9f05692-fd89-11e1-a21f-0800200c9a66' => 'Öffentliche Verkehrsmittel', 'f9f05693-fd89-11e1-a21f-0800200c9a66' => 'Taxi', 'f9f05690-fd89-11e1-a21f-0800200c9a66' => 'Bahn-/Flugticket, Mietwagen', 'f9f05694-fd89-11e1-a21f-0800200c9a66' => 'Übernachtungskosten', '4c4f9907-0379-408a-989b-22850d2fbcdc' => 'Frühstück', '9fb5e4b0-94ae-47f3-804f-5ed00e4aceb6' => 'Verpflegungsmehraufwendungen', 'cf03a2b0-f838-474f-ac5e-67adb9b830c7' => 'Reise MA', '3620798f-ae06-4492-b775-1c87eb99247c' => 'Fahrtkosten MA', 'b99b667f-bfee-41b9-8ec0-cee308bdacfd' => 'Übernachtung MA', '353e8c93-5f69-4476-887f-d48734ee2cc7' => 'Verpflegungsmehraufw. MA', // Fortbildung '5bc9acec-85af-48dd-a4c3-9ccc4ea6ac80' => 'Fortbildung', '16d04a27-fd91-11e1-a21f-0800200c9a66' => 'Seminar/Weiterbildung', // Beratung 'efa85651-fd85-11e1-a21f-0800200c9a66' => 'Beratung', 'f48154a0-fd90-11e1-a21f-0800200c9a66' => 'Rechtsanwalt', 'f48154a1-fd90-11e1-a21f-0800200c9a66' => 'Steuerberater', '2bdc3fd5-3ef3-4732-b315-4fa2c1061994' => 'Buchführungskosten', '90999976-9851-491a-9b68-12f4078c219c' => 'Abschluss- und Prüfungskosten', // Miete/Leasing 'efa82f45-fd85-11e1-a21f-0800200c9a66' => 'Miete/Leasing', 'ccbd1971-fd88-11e1-a21f-0800200c9a66' => 'Leasing für Geräte', // Versicherungen/Beiträge 'efa82f46-fd85-11e1-a21f-0800200c9a66' => 'Versicherungen/Beiträge', 'f49d88d0-fd88-11e1-a21f-0800200c9a66' => 'Betriebshaftpflicht', '5ce0f8a0-fd89-11e1-a21f-0800200c9a66' => 'Firmenversicherung', 'f49d88d2-fd88-11e1-a21f-0800200c9a66' => 'Rechtschutz', 'f49d88d3-fd88-11e1-a21f-0800200c9a66' => 'Transportversicherung', 'f49d88d1-fd88-11e1-a21f-0800200c9a66' => 'Innungs- und Verbandsbeiträge', // Werbung 'efa82f48-fd85-11e1-a21f-0800200c9a66' => 'Werbung', 'd22989b5-fd89-11e1-a21f-0800200c9a66' => 'Werbegeschenke/Sponsoring', 'd22989b0-fd89-11e1-a21f-0800200c9a66' => 'Anzeigen Print- und Online', 'd22989b1-fd89-11e1-a21f-0800200c9a66' => 'Dekoration', 'd22989b2-fd89-11e1-a21f-0800200c9a66' => 'Geschäftspapier/Visitenkarten', 'd22989b3-fd89-11e1-a21f-0800200c9a66' => 'Marketing', 'd22989b4-fd89-11e1-a21f-0800200c9a66' => 'Messekosten', '01d94be1-ba15-4dd8-a8e2-e1d51eaab8f9' => 'Repräsentationskosten', // Zinsen/Gebühren 'c3dc62f5-e382-4f34-a286-b06bda0b5e90' => 'Zinsen/Gebühren', '16d04a22-fd91-11e1-a21f-0800200c9a66' => 'Girokontozinsen', '16d04a23-fd91-11e1-a21f-0800200c9a66' => 'Kontoführung/Kartengebühr', '5921d420-fd91-11e1-a21f-0800200c9a66' => 'Darlehenszinsen', '5921d422-fd91-11e1-a21f-0800200c9a66' => 'Darlehensgebühren', // Gezahlte Vorsteuer '3da06950-a89f-4b3f-9932-0e627cdf6a34' => 'Gezahlte Vorsteuer', 'f1c2c983-db43-4d91-b0b1-c9d8aa89adef' => 'Einfuhrumsatzsteuer', // Umsatzsteuer-Vorauszahlungen '222b6f72-fd92-11e1-a21f-0800200c9a66' => 'Umsatzsteuer-Vorauszahlungen', 'e68b1ec8-3a46-4100-890b-01bc86cf8ada' => 'Umsatzsteuer-Vorauszahlungen 1/11', 'ebbdd0f4-3bd4-4d2e-847f-8b68314f7ef6' => 'Umsatzsteuer-Vorjahr', // Beschränkt abziehbare Betriebsausgaben 'efa82f4a-fd85-11e1-a21f-0800200c9a66' => 'Beschränkt abziehbare Betriebsausgaben', '934adb21-fd90-11e1-a21f-0800200c9a66' => 'Bewirtungskosten', 'be378725-ff9e-4180-b72a-2effe6493bba' => 'Bewirtungskosten (nicht abziehbar)', '09b906eb-8e05-4ee7-88a5-8e49e6c4db72' => 'Geschenke', // Fahrzeug 'efa82f47-fd85-11e1-a21f-0800200c9a66' => 'Fahrzeug', '9eaf6ff0-fd89-11e1-a21f-0800200c9a66' => 'Benzin', '9eaf6ff7-fd89-11e1-a21f-0800200c9a66' => 'Wagenpflege', '9eaf6ff1-fd89-11e1-a21f-0800200c9a66' => 'Inspektion/Reparatur', '9eaf6ff3-fd89-11e1-a21f-0800200c9a66' => 'KFZ-Versicherungen', '9eaf6ff4-fd89-11e1-a21f-0800200c9a66' => 'Leasing/Mietwagen', '9eaf6ff5-fd89-11e1-a21f-0800200c9a66' => 'Stellplatz/Garagenmiete', '1e541b97-42de-4eb2-abe7-0e208cf46f38' => 'Mietleasing KFZ', '9eaf6ff8-fd89-11e1-a21f-0800200c9a66' => 'Sonstige KFZ-Kosten', '79e1efd6-7103-46cf-99c2-0717cc60350b' => 'Mautgebühren', '5597e22b-7ce8-4686-b15d-c2a6caa12d3b' => 'Kosten betriebl. Nutzung KFZ im Privatvermögen', // Reparaturen 'efa85650-fd85-11e1-a21f-0800200c9a66' => 'Reparaturen', 'd5249d10-fd90-11e1-a21f-0800200c9a66' => 'Kleinmaterial', 'd5249d12-fd90-11e1-a21f-0800200c9a66' => 'Wartung', '50ca159d-1155-4d9a-8f79-b013943c774e' => 'Anlagen und Maschinen', 'd854ed5f-969a-4b5f-b13a-9679648aa988' => 'Sonstige Reparaturen', // Sonstige Ausgaben '16d04a28-fd91-11e1-a21f-0800200c9a66' => 'Sonstige Ausgaben', '16d04a21-fd91-11e1-a21f-0800200c9a66' => 'Bürobedarf', '16d04a24-fd91-11e1-a21f-0800200c9a66' => 'Porto', '16d04a29-fd91-11e1-a21f-0800200c9a66' => 'Zeitschriften/Bücher', '934adb20-fd90-11e1-a21f-0800200c9a66' => 'Betriebliche Besprechungen', '16d04a26-fd91-11e1-a21f-0800200c9a66' => 'Reinigung/Reinigungsmittel', '16d04a20-fd91-11e1-a21f-0800200c9a66' => 'Anschaffungen', 'fb198cf9-79f2-407c-baeb-9d8aa9b98fd0' => 'Kosten der Warenabgabe', '26e4fa58-db12-443f-9e70-9a8081730c1c' => 'Verpackungsmaterial', 'b49aae5f-4121-4262-b8bd-f49278b66423' => 'Lizenzen und Konzessionen', '9d92c0dc-8cea-4791-ab3b-90f913101d32' => 'Wartungskosten für Hard- und Software', '6a90d581-46ba-4b59-ba8f-e568a552e0c0' => 'Aufmerksamkeiten', 'c1d7d464-0b42-4a7e-b6af-535b2eb4a2fd' => 'Mahngebühren', '61b6c617-d5b6-44ee-b43a-ac97b71f1bd8' => 'Rundungsdifferenzen', '207833b2-59fb-4185-b7b3-52ab9b944d59' => 'Währungsumrechnung', // Anlagevermögen 'aa2d19a0-43e7-4330-a579-75c962254546' => 'Software', 'e82f21da-c21b-44a0-8abb-cd805b62b231' => 'Technische Anlagen und Maschinen', '1b029e34-70ad-4869-95da-bc9454c8650c' => 'KFZ', 'ff95af70-57e3-46a8-b6cb-0b03400d4879' => 'LKW', '281cd301-6e13-4d27-81c2-30f896e5bf1d' => 'Sonstige Transportmittel', '121188e5-61ec-4734-bcc2-282e4340bb33' => 'Werkzeuge', '60a5a91b-6b4a-485e-b610-232b423a161d' => 'Betriebs-und Geschäftsausstattung', '571e17ef-962d-4ec1-aedf-b166d876ebe1' => 'Ladeneinrichtung', 'd0d633ec-dda7-4aa3-867c-96e7a0d97477' => 'Büroeinrichtung', '1b2d76c2-23a2-48c6-a717-7f9fecf99556' => 'Geringwertige Wirtschaftsgüter', // Steuern '9eaf6ff2-fd89-11e1-a21f-0800200c9a66' => 'KFZ-Steuer', '222b6f71-fd92-11e1-a21f-0800200c9a66' => 'Gewerbesteuer', '75c4dd86-9977-4624-bac8-620e7aa08dd2' => 'Körperschaftsteuer', 'fcac6066-8597-4086-8544-b95c444738a2' => 'Solidaritätszuschlag', // Darlehen 'efa85654-fd85-11e1-a21f-0800200c9a66' => 'Darlehen', '5921d421-fd91-11e1-a21f-0800200c9a66' => 'Tilgung', // Privat 'efa85653-fd85-11e1-a21f-0800200c9a66' => 'Privat', '16d04a25-fd91-11e1-a21f-0800200c9a66' => 'Privatentnahmen', '35bfb902-6845-45aa-8f90-747226f1e632' => 'Gesellschafter-Entnahmen', '222b6f70-fd92-11e1-a21f-0800200c9a66' => 'Einkommensteuer', '328a41b4-58d7-4595-8840-1b96ad398f15' => 'Versicherungen', '72b9ed0d-95fa-4be7-8035-1f96d28b9725' => 'Spenden', '800030a3-b5e8-43ef-b1a1-62046d65f1a3' => 'Krankheitskosten', // Zu zahlen 'ec472a04-9712-4ebb-9c8d-981941a456e5' => 'Zu zahlen', '4708d50c-f3a9-4a27-98c4-d37502e3b45c' => 'Lohn-und Kirchensteuer', '27c9577e-9472-47cd-818e-a0cbb042bf82' => 'Sozialversicherungsbeiträge', 'db9689f7-49d6-4f6f-9cc4-93804f7c674a' => 'Vermögensbildung', 'fa4aadaa-8f1f-4121-99b4-bac9ad7c9bc9' => 'Verrechnung Lohn/Gehalt', 'cd3ea3e5-b681-496b-9886-7f8a8ab0397a' => 'Nettogehälter', // Zu prüfen '8d2e71c6-09d5-439a-a295-a9e71661afcd' => 'Zu prüfen', '62e21a0d-af46-4674-bfa0-60bc2607fa17' => 'Durchlaufende Posten', 'dd56efd2-6c62-40e4-9d9e-cba7b0045911' => 'Geldtransit', ] ];
One-Stop-Shop (OSS) Kategorien
- Deutsche Umsatzsteuer
Kategorie: Fernverkauf (Fernverkauf steht für Verkauf von Waren) categoryId: 7c112b66-0565-479c-bc18-5845e080880a Steuersätze: Es gelten die deutschen Steuersätze Kategorie: Elektronische Dienstleistungen (ehemals MOSS) categoryId: d73b880f-c24a-41ea-a862-18d90e1c3d82 Steuersätze: Es gelten die deutschen Steuersätze
- EU-Zielland-Steuer
Kategorie: Fernverkauf in EU-Land steuerpflichtig categoryId: 4ebd965a-7126-416c-9d8c-a5c9366ee473 Steuersätze: Es gelten Steuersätze des Ziellandes Kategorie: Elektronische Dienstleistung in EU-Land steuerpflichtig (ehemals MOSS) categoryId: efa82f40-fd85-11e1-a21f-0800200c9a66 Steuersätze: Es gelten Steuersätze des Ziellandes
Webhook Anfragen
Wir liefern eine callback.php mit, die als callback URL angegeben werden kann. Bei allen Aufrufen wird die X-Lxo-Signature überprüft und sichergestellt, dass der Aufruf wirklich von einem lexoffice Server erstellt wurde.
Error Handling
Alle Methoden sollten stets in einem try/catch Block verwendet werden.
Unser Client bietet eine erweiterte Execption Klasse, die via "$e->get_error()" sofern vorhanden weitere Details zur Anfrage und dem API Response zurück gibt.
Beispiel: Versuch eines PDF Downloads von einer nicht fertig gestellten Rechnung
try {
$lexoffice->get_invoice_pdf('7f0f0f7f-dd61-4bf7-a9f7-a67b0530c7e9', 'test.pdf');
} catch (lexoffice_exception $e) {
echo $e->getMessage();
// lexoffice-php-api: error in api request - check details via $e->get_error()
print_r($e->get_error());
/*
Array (
[HTTP Status] => 500
[Requested URI] => https://api.lexoffice.io/v1/invoices/7f0f0f7f-dd61-4bf7-a9f7-a67b0530c7e9/document
[Requested Payload] =>
[Response] => stdClass Object
(
[timestamp] => 2019-11-20T17:34:53.360+01:00
[status] => 500
[error] => Internal Server Error
[path] => /v1/invoices/7f0f0f7f-dd61-4bf7-a9f7-a67b0530c7e9/document
[traceId] => f9f241666675
[message] => A technical error has occurred that is not specified in more detail.
)
)
*/
}