Lexware-php-api: Unterschied zwischen den Versionen
Slutz (Diskussion | Beiträge) |
Slutz (Diskussion | Beiträge) Keine Bearbeitungszusammenfassung |
||
(98 dazwischenliegende Versionen von 3 Benutzern werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
= Übersicht | = Übersicht = | ||
PHP Client für [https://www.awin1.com/ | PHP Client für [https://www.awin1.com/cread.php?awinmid=13787&awinaffid=635216&ued=https%3A%2F%2Foffice.lexware.de office.lexware.de] API (ehemals lexoffice.de) | ||
* [https://github.com/Baebeca-Solutions/lexware-php-api Github] | |||
* [https://wiki.baebeca.de/index.php?title=lexware-php-api Wiki (Dokumentation)] | |||
* [https://www.baebeca.de/softwareentwicklung/lexware-php-client/ Projektseite] | |||
* [https://packagist.org/packages/baebeca/lexware-php-api Packagist] | |||
* [https://developers.lexware.io Lexware Office API-Dokumentation] | |||
[https://www.awin1.com/ | [[Datei:Lexware-Office-Logo.png||link=https://www.awin1.com/cread.php?awinmid=13787&awinaffid=635216&ued=https%3A%2F%2Foffice.lexware.de]] | ||
== Composer == | |||
Ersetze "php-x.x" mit deiner gewünschten PHP Version. | |||
=== CLI === | |||
composer require baebeca/lexware-php-api:dev-php-x.x | |||
== | === composer.json === | ||
<syntaxhighlight lang="json"> | |||
{ | |||
"require": { | |||
"baebeca/lexware-php-api": "dev-php-x.x", | |||
} | |||
} | |||
</syntaxhighlight> | |||
== Support == | |||
An wen kann ich mich wenden, wenn ich Probleme oder Fragen habe?<br> | |||
Für diese Frage ist entscheidend, ob du eine Nutzungslizenz erworben hast oder die freie Variante benutzt. | |||
* Wenn eine Nutzungslizenz vorhanden ist, kannst du jederzeit ein Ticket bei uns öffnen: | |||
** E-Mail: support@baebeca.de | |||
** Telefon: 02261-8161691 | |||
* Wenn du die freie Version benutzt, kannst du einen [https://github.com/Baebeca-Solutions/lexware-php-api/issues Github issue] öffnen. | |||
== Lizenz == | == Lizenz == | ||
Dieses Projekt steht unter der "GNU AGPLv3 Lizenz". | |||
Du darfst den Code frei verwenden, verändern und weiterverbreiten, **sofern deine Software ebenfalls quelloffen und veröffentlicht wird** (AGPLv3-konform). | |||
== | === Kommerzielle / Closed-Source Nutzung === | ||
Die Verwendung in '''kommerziellen''' oder '''Closed-Source'''-Projekten ist '''nicht ohne eine kommerzielle Lizenz gestattet'''. | |||
Bitte kontaktiere uns unter '''support@baebeca.de''', um eine Lizenz zu erwerben. | |||
Siehe dazu alle Infos: [https://github.com/Baebeca-Solutions/lexware-php-api/blob/php-8.4/LICENSE-commercial_DE.md Kommerzielle Lizenzbedingungen] | |||
== Lexware Office API Account erstellen == | |||
Erstellen Sie in Ihrem [https://www.awin1.com/cread.php?awinmid=13787&awinaffid=635216&ued=https%3A%2F%2Foffice.lexware.de Lexware Office Account] einen API Key. | |||
Einstellungen :: Erweiterungen :: Lexware Office Public API :: "Schlüssel neu erstellen" | |||
== Mehrwertsteuersenkung - Konjunkturpaket 01.07.2020 - 31.12.2020 == | |||
* https://office.lexware.de/mehrwertsteuer-rest-api | |||
* https://developers.lexware.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://help.lexware.de/de-form/articles/5207137-one-stop-shop-eu-regelung-belege-an-privatpersonen-im-eu-ausland | |||
== Rate-Limit == | |||
Lexware Office hat ein Rate-Limit von 2 Anfragen pro Sekunde. Siehe dazu: https://developers.lexware.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>$lexware->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 = | ||
<syntaxhighlight lang="php"> | <syntaxhighlight lang="php"> | ||
<?php | |||
require __DIR__.'/vendor/autoload.php'; | |||
use \Baebeca\LexwareApi; | |||
use \Baebeca\LexwareException; | |||
$ | |||
$lexware = new LexwareApi([ | |||
'api_key' => 'my-api-key' | |||
]); | |||
</syntaxhighlight> | </syntaxhighlight> | ||
== Start Parameter == | == Start Parameter == | ||
Zeile 55: | Zeile 83: | ||
:API Schlüssel | :API Schlüssel | ||
;callback [string] | ;callback [string] | ||
:Ihre Standard Callback URL für Webhooks von | :Ihre Standard Callback URL für Webhooks von Lexware Office | ||
;ssl_verify [bool] (default true) | ;ssl_verify [bool] (default true) | ||
:Soll die SSL verbindung zu | :Soll die SSL verbindung zu Lexware Office validiert werden | ||
== Error handling == | |||
<syntaxhighlight lang="php"> | |||
<?php | |||
// catch errors | |||
try { | |||
$invoices = $lexware->get_last_invoices(-5); | |||
} | |||
catch (LexwareException $e) { | |||
var_dump($e->getMessage()); | |||
print_r($e->getError()); | |||
} | |||
</syntaxhighlight> | |||
= Methoden = | = Methoden = | ||
Zeile 64: | Zeile 105: | ||
=== Account abfragen === | === Account abfragen === | ||
<syntaxhighlight lang="php">$ | <syntaxhighlight lang="php">$lexware->get_profile() : object</syntaxhighlight> | ||
Beispiel Rückgabe: | Beispiel Rückgabe: | ||
Zeile 89: | Zeile 130: | ||
=== Rechnung abfragen === | === Rechnung abfragen === | ||
<syntaxhighlight lang="php">$ | <syntaxhighlight lang="php">$lexware->get_invoice( string $uuid ) : object</syntaxhighlight> | ||
;uuid | ;uuid | ||
:Die eindeutige uuid des Eintrages der abgefragt werden soll | :Die eindeutige uuid des Eintrages der abgefragt werden soll | ||
=== Alle Rechnungen abfragen === | === Alle Rechnungen abfragen === | ||
<syntaxhighlight lang="php">$ | <syntaxhighlight lang="php">$lexware->get_invoices_all() : object</syntaxhighlight> | ||
=== Die letzten n Rechnungen abfragen === | |||
<syntaxhighlight lang="php">$lexware->get_last_invoices(int $count) : object</syntaxhighlight> | |||
=== Rechnung PDF herunterladen === | === Rechnung PDF herunterladen === | ||
<syntaxhighlight lang="php">$ | |||
'''legacy function - will be removed in futere releases, use ''get_pdf($type, $uuid, $filename)'' instead''' | |||
<syntaxhighlight lang="php">$lexware->get_invoice_pdf( string $uuid, string $filename) : bool</syntaxhighlight> | |||
;uuid | ;uuid | ||
:Die eindeutige uuid des Eintrages der abgefragt werden soll | :Die eindeutige uuid des Eintrages der abgefragt werden soll | ||
;filename | ;filename | ||
:Der lokale Dateiname an dem das PDF abgelegt werden soll | :Der lokale Dateiname an dem das PDF abgelegt werden soll. Sofern es sich um eine E-Rechnung handelt wird auch die XML Datei heruntergeladen und mit dem Zusatz ".xml" abgelegt. | ||
=== Rechnung anlegen === | === Rechnung anlegen === | ||
<syntaxhighlight lang="php">$ | <syntaxhighlight lang="php">$lexware->create_invoice( array $data [, bool $finalized = false ] ) : object</syntaxhighlight> | ||
;data | ;data | ||
:Ein Array der Rechnungsdaten nach der nötigen [https://developers. | :Ein Array der Rechnungsdaten nach der nötigen [https://developers.lexware.io/docs/#lexware-api-documentation Lexware Office Formatierung] | ||
:Beispiel | :Beispiel | ||
<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 156: | Zeile 203: | ||
; finalized | ; finalized | ||
: Entscheidet ob die Rechnung fertiggestellt werden soll. | : Entscheidet ob die Rechnung fertiggestellt werden soll. | ||
== Serienrechnungen == | |||
=== Serienrechnung abfragen === | |||
<syntaxhighlight lang="php">$lexware->get_recurring_template( string $uuid ) : object</syntaxhighlight> | |||
;uuid | |||
:Die eindeutige uuid des Eintrages der abgefragt werden soll | |||
=== Alle Serienrechnungen abfragen === | |||
<syntaxhighlight lang="php">$lexware->get_recurring_templates_all() : object</syntaxhighlight> | |||
== Gutschriften == | |||
=== Gutschrift abfragen === | |||
<syntaxhighlight lang="php">$lexware->get_creditnote( string $uuid ) : object</syntaxhighlight> | |||
;uuid | |||
:Die eindeutige uuid der Gutschrift die abgefragt werden soll | |||
=== Gutschrift anlegen === | |||
<syntaxhighlight lang="php">$lexware->create_creditnote( array $data [, bool $finalized = false, string $linked_invoice_id = '' ] ) : object</syntaxhighlight> | |||
;data | |||
:Ein Array der Gutschriftsdaten nach der nötigen [https://developers.lexware.io/docs/#credit-notes-endpoint-credit-notes-properties Lexware Office 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 Lexware Office UUID einer offenen Rechnung für die eine Gutschrift erstellt wird. | |||
== Angebote == | |||
=== Angebot abfragen === | |||
<syntaxhighlight lang="php">$lexware->get_quotation( string $uuid ) : object</syntaxhighlight> | |||
;uuid | |||
:Die eindeutige uuid des Angebotes das abgefragt werden soll | |||
=== Angebot anlegen === | |||
<syntaxhighlight lang="php">$lexware->create_quotation( array $data [, bool $finalized = false ] ) : object</syntaxhighlight> | |||
;data | |||
:Ein Array der Angebotsdaten nach der nötigen [https://developers.lexware.io/docs/#quotations-endpoint-quotations-properties Lexware Office 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ätigung abfragen === | |||
<syntaxhighlight lang="php">$lexware->get_orderconfirmation( string $uuid ) : object</syntaxhighlight> | |||
;uuid | |||
:Die eindeutige uuid der Auftragsbestätigung die abgefragt werden soll | |||
=== Auftragsbestätigung anlegen === | |||
<syntaxhighlight lang="php">$lexware->create_orderconfirmation( array $data [, bool $finalized = false ] ) : object</syntaxhighlight> | |||
;data | |||
:Ein Array der Auftragsbestätigungsdaten nach der nötigen [https://developers.lexware.io/docs/#lexware-api-documentation Lexware Office 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">$lexware->get_deliverynote( string $uuid ) : object</syntaxhighlight> | |||
;uuid | |||
:Die eindeutige uuid des Lieferscheins der abgefragt werden soll | |||
=== Lieferschein anlegen === | |||
<syntaxhighlight lang="php">$lexware->create_delivery_note( array $data [, bool $finalized = false ] ) : object</syntaxhighlight> | |||
;data | |||
:Ein Array der Lieferscheindaten nach der nötigen [https://developers.lexware.io/docs/#delivery-notes-endpoint-delivery-notes-properties Lexware Office 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> | |||
== Mahnung == | |||
=== Mahnung abfragen === | |||
<syntaxhighlight lang="php">$lexware->get_dunning( string $uuid ) : object</syntaxhighlight> | |||
;uuid | |||
:Die eindeutige uuid der Mahnung welche abgefragt werden soll | |||
=== Mahnung anlegen === | |||
<syntaxhighlight lang="php">$lexware->create_dunning( array $data, string $precedingSalesVoucherId ) : object</syntaxhighlight> | |||
;data | |||
:Ein Array der Mahndaten nach der nötigen [https://developers.lexware.io/docs/#dunnings-endpoint-create-a-dunning Lexware Office Formatierung] | |||
== Belege == | |||
=== Beleg anlegen === | |||
<syntaxhighlight lang="php">$lexware->create_voucher( array $data ) : object</syntaxhighlight> | |||
;Paramater | |||
;data | |||
:Ein Array der Belegdaten nach der nötigen [https://developers.lexware.io/docs/#vouchers-endpoint-create-a-voucher Lexware Office Formatierung] | |||
=== Beleg abfragen === | |||
<syntaxhighlight lang="php">$lexware->get_voucher( string $uuid ) : object</syntaxhighlight> | |||
;Paramater | |||
*uuid | |||
**Die eindeutige uuid des Beleges der abgefragt werden soll | |||
=== Belege abfragen === | |||
<syntaxhighlight lang="php">$lexware->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 | |||
: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) === | |||
<syntaxhighlight lang="php">$lexware->upload_file($file) : object</syntaxhighlight> | |||
;Parameter | |||
*file | |||
**Der Pfad zur Datei die hochgeladen werden soll | |||
; Rückgabe | |||
* id | |||
** Die eindeutige Datei-ID von Lexware Office | |||
;Beispiel Anfrage | |||
<syntaxhighlight lang="php"> | |||
$lexware->upload_file(__DIR__.'/invoice.pdf'); | |||
</syntaxhighlight> | |||
;Beispiel Rückgabe | |||
<syntaxhighlight lang="php"> | |||
stdClass Object ( | |||
[id] => 221fd5ed-5547-4bd3-b7c2-9796c1a0e4a6 | |||
) | |||
</syntaxhighlight> | |||
=== Beleg hochladen (zugeordnet) === | |||
<syntaxhighlight lang="php">$lexware->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 Lexware Office | |||
=== Beleg Dateien herunterladen === | |||
<syntaxhighlight lang="php">$lexware->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. Sofern es sich um eine E-Rechnung handelt wird sowohl die XML Datei als auch die von Lexware visualisierte PDF Rechnung heruntergeladen. | |||
;Beispiel Anfrage | |||
<syntaxhighlight lang="php"> | |||
$lexware->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> | |||
== Kontakte == | == Kontakte == | ||
=== Kontakt abfragen === | === Kontakt abfragen === | ||
<syntaxhighlight lang="php">$ | <syntaxhighlight lang="php">$lexware->get_contact( string $uuid ) : object</syntaxhighlight> | ||
;Paramater | |||
*uuid | *uuid | ||
**Die eindeutige uuid des Eintrages der abgefragt werden soll | **Die eindeutige uuid des Eintrages der abgefragt werden soll | ||
=== Kontakt suchen === | |||
Bitte beachte das Lexware Office 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">$lexware->search_contact( array $filter, bool $respect_wildcards = false ) : object</syntaxhighlight> | |||
;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) | |||
*wildcards | |||
** Bool | Wenn ''true'' werden die Zeichen "_" (ein Zeichen) und "%" (mehrere Zeichen) als Wildcards genutzt, andernfalls im Inhalt als Zeichen erwartet. | |||
;Beispiel Anfrage | |||
<syntaxhighlight lang="php"> | |||
$lexware->search_contact(array( | |||
'email' => '', | |||
'name' => 'John Doe', | |||
'number' => '', | |||
'customer' => '', | |||
'vendor' => '', | |||
)); | |||
</syntaxhighlight> | |||
=== Alle Kontakte abfragen === | === Alle Kontakte abfragen === | ||
<syntaxhighlight lang="php">$ | <syntaxhighlight lang="php">$lexware->get_contacts_all() : object</syntaxhighlight> | ||
=== Kontakt anlegen === | === Kontakt anlegen === | ||
<syntaxhighlight lang="php">$ | <syntaxhighlight lang="php">$lexware->create_contact( array $data) : object</syntaxhighlight> | ||
;Parameter | |||
*data | *data | ||
**Ein Array der Kontaktdaten nach der nötigen [https://developers. | **Ein Array der Kontaktdaten nach der nötigen [https://developers.lexware.io/docs/#lexware-api-documentation Lexware Office Formatierung] | ||
;Beispiel Anfrage | |||
<syntaxhighlight lang="php"> | |||
$lexware->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' => '', | |||
)); | |||
</syntaxhighlight> | |||
=== Kontakt aktualisieren === | === Kontakt aktualisieren === | ||
<syntaxhighlight lang="php">$ | <syntaxhighlight lang="php">$lexware->update_contact( string $uuid, array $data) : object</syntaxhighlight> | ||
;Parameter | |||
*uuid | *uuid | ||
**Die eindeutige uuid des Eintrages der abgefragt werden soll | **Die eindeutige uuid des Eintrages der abgefragt werden soll | ||
*data | *data | ||
**Ein Array der Kontaktdaten nach der nötigen [https://developers. | **Ein Array der Kontaktdaten nach der nötigen [https://developers.lexware.io/docs/#lexware-api-documentation Lexware Office Formatierung] | ||
== Events / Webhooks == | == Events / Webhooks == | ||
=== Event anlegen === | === Event anlegen === | ||
<syntaxhighlight lang="php">$ | <syntaxhighlight lang="php">$lexware->create_event( string $event [, bool $callback = false ] ) : array|bool</syntaxhighlight> | ||
;event | ;event | ||
:Mögliche sind alle von | :Mögliche sind alle von Lexware Office [https://developers.lexware.io/docs/#event-subscriptions-endpoint-event-types angebotenen Events]. | ||
;callback | ;callback | ||
:Die Callback URL für diesen Aufruf. Wenn keine angegeben wird, wird die Standard URL aus der initialisierung genutzt. | :Die Callback URL für diesen Aufruf. Wenn keine angegeben wird, wird die Standard URL aus der initialisierung genutzt. | ||
=== Aktives Event abfragen === | === Aktives Event abfragen === | ||
<syntaxhighlight lang="php">$ | <syntaxhighlight lang="php">$lexware->get_event( string $uuid ) : array</syntaxhighlight> | ||
;uuid | ;uuid | ||
:Die eindeutige uuid des Eintrages der abgefragt werden soll | :Die eindeutige uuid des Eintrages der abgefragt werden soll | ||
=== Alle aktiven Events abfragen === | === Alle aktiven Events abfragen === | ||
<syntaxhighlight lang="php">$ | <syntaxhighlight lang="php">$lexware->get_events_all() : object</syntaxhighlight> | ||
=== Event löschen === | |||
<syntaxhighlight lang="php">$lexware->delete_event( string $iiud ) : object</syntaxhighlight> | |||
;uuid | |||
:Die ID eines zuvor erstellten Events. | |||
== Steuern == | |||
=== Kleinunternehmer === | |||
<syntaxhighlight lang="php">$lexware->is_tax_free_company(): bool</syntaxhighlight> | |||
=== EU - Innergemeinschaftlicher Raum === | |||
<syntaxhighlight lang="php">$lexware->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">$lexware->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">$lexware->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">$lexware->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">$lexware->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">$lexware->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 == | |||
=== PDFs herunterladen === | |||
<syntaxhighlight lang="php">$lexware->get_pdf(string $type, string $uuid, string $filename): bool</syntaxhighlight> | |||
;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 Lexware Office Server erstellt wurde. | |||
= Error Handling = | = Error Handling = | ||
Alle Methoden sollten stets in einem try/catch Block verwendet werden.<br> | Alle Methoden sollten stets in einem try/catch Block verwendet werden.<br> | ||
Unser Client bietet eine erweiterte Execption Klasse, die via "$e-> | Unser Client bietet eine erweiterte Execption Klasse, die via "$e->getError()" sofern vorhanden weitere Details zur Anfrage und dem API Response zurück gibt. | ||
Beispiel: Versuch eines PDF Downloads von einer nicht fertig gestellten Rechnung | Beispiel: Versuch eines PDF Downloads von einer nicht fertig gestellten Rechnung | ||
Zeile 207: | Zeile 1.043: | ||
<syntaxhighlight lang="php" highlight="3,7"> | <syntaxhighlight lang="php" highlight="3,7"> | ||
try { | try { | ||
$ | $lexware->get_invoice_pdf('7f0f0f7f-dd61-4bf7-a9f7-a67b0530c7e9', 'test.pdf'); | ||
} catch ( | } catch (LexwareException $e) { | ||
echo $e->getMessage(); | echo $e->getMessage(); | ||
// | // LexwareApi: error in api request - check details via $e->getError() | ||
print_r($e-> | print_r($e->getError()); | ||
/* | /* | ||
Array ( | Array ( | ||
[HTTP Status] => 500 | [HTTP Status] => 500 | ||
[Requested URI] => https://api. | [Requested URI] => https://api.lexware.io/v1/invoices/7f0f0f7f-dd61-4bf7-a9f7-a67b0530c7e9/document | ||
[Requested Payload] => | [Requested Payload] => | ||
[Response] => stdClass Object | [Response] => stdClass Object |
Aktuelle Version vom 8. Juni 2025, 10:45 Uhr
Übersicht
PHP Client für office.lexware.de API (ehemals lexoffice.de)
Composer
Ersetze "php-x.x" mit deiner gewünschten PHP Version.
CLI
composer require baebeca/lexware-php-api:dev-php-x.x
composer.json
{
"require": {
"baebeca/lexware-php-api": "dev-php-x.x",
}
}
Support
An wen kann ich mich wenden, wenn ich Probleme oder Fragen habe?
Für diese Frage ist entscheidend, ob du eine Nutzungslizenz erworben hast oder die freie Variante benutzt.
- Wenn eine Nutzungslizenz vorhanden ist, kannst du jederzeit ein Ticket bei uns öffnen:
- E-Mail: support@baebeca.de
- Telefon: 02261-8161691
- Wenn du die freie Version benutzt, kannst du einen Github issue öffnen.
Lizenz
Dieses Projekt steht unter der "GNU AGPLv3 Lizenz".
Du darfst den Code frei verwenden, verändern und weiterverbreiten, **sofern deine Software ebenfalls quelloffen und veröffentlicht wird** (AGPLv3-konform).
Kommerzielle / Closed-Source Nutzung
Die Verwendung in kommerziellen oder Closed-Source-Projekten ist nicht ohne eine kommerzielle Lizenz gestattet.
Bitte kontaktiere uns unter support@baebeca.de, um eine Lizenz zu erwerben. Siehe dazu alle Infos: Kommerzielle Lizenzbedingungen
Lexware Office API Account erstellen
Erstellen Sie in Ihrem Lexware Office Account einen API Key.
Einstellungen :: Erweiterungen :: Lexware Office Public API :: "Schlüssel neu erstellen"
Mehrwertsteuersenkung - Konjunkturpaket 01.07.2020 - 31.12.2020
- https://office.lexware.de/mehrwertsteuer-rest-api
- https://developers.lexware.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://help.lexware.de/de-form/articles/5207137-one-stop-shop-eu-regelung-belege-an-privatpersonen-im-eu-ausland
Rate-Limit
Lexware Office hat ein Rate-Limit von 2 Anfragen pro Sekunde. Siehe dazu: https://developers.lexware.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 $lexware->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
<?php
require __DIR__.'/vendor/autoload.php';
use \Baebeca\LexwareApi;
use \Baebeca\LexwareException;
$lexware = new LexwareApi([
'api_key' => 'my-api-key'
]);
Start Parameter
- api_key [string]
- API Schlüssel
- callback [string]
- Ihre Standard Callback URL für Webhooks von Lexware Office
- ssl_verify [bool] (default true)
- Soll die SSL verbindung zu Lexware Office validiert werden
Error handling
<?php
// catch errors
try {
$invoices = $lexware->get_last_invoices(-5);
}
catch (LexwareException $e) {
var_dump($e->getMessage());
print_r($e->getError());
}
Methoden
Account
Account abfragen
$lexware->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
$lexware->get_invoice( string $uuid ) : object
- uuid
- Die eindeutige uuid des Eintrages der abgefragt werden soll
Alle Rechnungen abfragen
$lexware->get_invoices_all() : object
Die letzten n Rechnungen abfragen
$lexware->get_last_invoices(int $count) : object
Rechnung PDF herunterladen
legacy function - will be removed in futere releases, use get_pdf($type, $uuid, $filename) instead
$lexware->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. Sofern es sich um eine E-Rechnung handelt wird auch die XML Datei heruntergeladen und mit dem Zusatz ".xml" abgelegt.
Rechnung anlegen
$lexware->create_invoice( array $data [, bool $finalized = false ] ) : object
- data
- Ein Array der Rechnungsdaten nach der nötigen Lexware Office 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
$lexware->get_recurring_template( string $uuid ) : object
- uuid
- Die eindeutige uuid des Eintrages der abgefragt werden soll
Alle Serienrechnungen abfragen
$lexware->get_recurring_templates_all() : object
Gutschriften
Gutschrift abfragen
$lexware->get_creditnote( string $uuid ) : object
- uuid
- Die eindeutige uuid der Gutschrift die abgefragt werden soll
Gutschrift anlegen
$lexware->create_creditnote( array $data [, bool $finalized = false, string $linked_invoice_id = '' ] ) : object
- data
- Ein Array der Gutschriftsdaten nach der nötigen Lexware Office 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 Lexware Office UUID einer offenen Rechnung für die eine Gutschrift erstellt wird.
Angebote
Angebot abfragen
$lexware->get_quotation( string $uuid ) : object
- uuid
- Die eindeutige uuid des Angebotes das abgefragt werden soll
Angebot anlegen
$lexware->create_quotation( array $data [, bool $finalized = false ] ) : object
- data
- Ein Array der Angebotsdaten nach der nötigen Lexware Office 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
$lexware->get_orderconfirmation( string $uuid ) : object
- uuid
- Die eindeutige uuid der Auftragsbestätigung die abgefragt werden soll
Auftragsbestätigung anlegen
$lexware->create_orderconfirmation( array $data [, bool $finalized = false ] ) : object
- data
- Ein Array der Auftragsbestätigungsdaten nach der nötigen Lexware Office 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
$lexware->get_deliverynote( string $uuid ) : object
- uuid
- Die eindeutige uuid des Lieferscheins der abgefragt werden soll
Lieferschein anlegen
$lexware->create_delivery_note( array $data [, bool $finalized = false ] ) : object
- data
- Ein Array der Lieferscheindaten nach der nötigen Lexware Office 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,
),
)
Mahnung
Mahnung abfragen
$lexware->get_dunning( string $uuid ) : object
- uuid
- Die eindeutige uuid der Mahnung welche abgefragt werden soll
Mahnung anlegen
$lexware->create_dunning( array $data, string $precedingSalesVoucherId ) : object
- data
- Ein Array der Mahndaten nach der nötigen Lexware Office Formatierung
Belege
Beleg anlegen
$lexware->create_voucher( array $data ) : object
- Paramater
- data
- Ein Array der Belegdaten nach der nötigen Lexware Office Formatierung
Beleg abfragen
$lexware->get_voucher( string $uuid ) : object
- Paramater
- uuid
- Die eindeutige uuid des Beleges der abgefragt werden soll
Belege abfragen
$lexware->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)
$lexware->upload_file($file) : object
- Parameter
- file
- Der Pfad zur Datei die hochgeladen werden soll
- Rückgabe
- id
- Die eindeutige Datei-ID von Lexware Office
- Beispiel Anfrage
$lexware->upload_file(__DIR__.'/invoice.pdf');
- Beispiel Rückgabe
stdClass Object (
[id] => 221fd5ed-5547-4bd3-b7c2-9796c1a0e4a6
)
Beleg hochladen (zugeordnet)
$lexware->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 Lexware Office
Beleg Dateien herunterladen
$lexware->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. Sofern es sich um eine E-Rechnung handelt wird sowohl die XML Datei als auch die von Lexware visualisierte PDF Rechnung heruntergeladen.
- Beispiel Anfrage
$lexware->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
$lexware->get_contact( string $uuid ) : object
- Paramater
- uuid
- Die eindeutige uuid des Eintrages der abgefragt werden soll
Kontakt suchen
Bitte beachte das Lexware Office stets eine Suche nach "contains" macht. Eine Suche nach hans@hans.de liefert einen Treffer für den Kontakt hans@hans.de.google.com
$lexware->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
$lexware->search_contact(array(
'email' => '',
'name' => 'John Doe',
'number' => '',
'customer' => '',
'vendor' => '',
));
Alle Kontakte abfragen
$lexware->get_contacts_all() : object
Kontakt anlegen
$lexware->create_contact( array $data) : object
- Parameter
- data
- Ein Array der Kontaktdaten nach der nötigen Lexware Office Formatierung
- Beispiel Anfrage
$lexware->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
$lexware->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 Lexware Office Formatierung
Events / Webhooks
Event anlegen
$lexware->create_event( string $event [, bool $callback = false ] ) : array|bool
- event
- Mögliche sind alle von Lexware Office 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
$lexware->get_event( string $uuid ) : array
- uuid
- Die eindeutige uuid des Eintrages der abgefragt werden soll
Alle aktiven Events abfragen
$lexware->get_events_all() : object
Event löschen
$lexware->delete_event( string $iiud ) : object
- uuid
- Die ID eines zuvor erstellten Events.
Steuern
Kleinunternehmer
$lexware->is_tax_free_company(): bool
EU - Innergemeinschaftlicher Raum
$lexware->is_european_member(string $country_code, int $date): bool
- $country_code
- 2-Stelliger Country Code des Rechnungslandes
- $date
- Timestamp Rechnungsdatum
Buchungskategorie bestimmen
$lexware->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
$lexware->get_taxrates(string $country_code, int $date): array
- $country_code
- 2-Stelliger Country Code des Rechnungslandes
- $date
- Timestamp Rechnungsdatum
Prüfung Steuersatz
$lexware->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
$lexware->is_oss_needed(string $country_code, int $date)
- $country_code
- 2-Stelliger Country Code des Rechnungslandes
- $date
- Timestamp Rechnungsdatum
Prüfung OSS Voucher Kategorie
$lexware->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
$lexware->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 Lexware Office 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->getError()" 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 {
$lexware->get_invoice_pdf('7f0f0f7f-dd61-4bf7-a9f7-a67b0530c7e9', 'test.pdf');
} catch (LexwareException $e) {
echo $e->getMessage();
// LexwareApi: error in api request - check details via $e->getError()
print_r($e->getError());
/*
Array (
[HTTP Status] => 500
[Requested URI] => https://api.lexware.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.
)
)
*/
}