Lexware-php-api
Ü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.
)
)
*/
}