Buchungen¶
Buchungen sind steuerlich relevante Einnahmen und Ausgaben.
Mit der bookamat–API können Buchungen abgefragt, hinzugefügt, geändert und gelöscht werden. Es sind also GET, POST, PUT/PATCH und DELETE Requests möglich.
Liste der Buchungen¶
Die Liste aller gebuchten Buchungen wird mit einem GET Request auf die URL der Liste abgefragt.
/bookings/
Response¶
HTTP/1.0 200 OK
Content-Type: application/json; charset=utf-8
{
"count": 2,
"next": null,
"previous": null,
"results": [
{
"id": 6782,
"status": "1",
"title": "Büromiete",
"document_number": "1-1",
"date": "2015-01-01",
"date_invoice": null,
"date_delivery": null,
"date_order": null,
"costcentre": {
"id": 4523,
"name": "Büro"
},
"amounts": [
{
"group": "2",
"bankaccount": {
"id": 1254,
"name": "Bankkonto"
},
"costaccount": {
"id": 2369,
"name": "Miete und Pacht"
},
"purchasetaxaccount": {
"id": 3476,
"name": "Vorsteuer Inland"
},
"amount": "400.00",
"amount_after_tax": "400.00",
"tax_percent": "20.00",
"tax_value": "80.00",
"deductibility_tax_percent": "100.00",
"deductibility_tax_value": "80.00",
"deductibility_amount_percent": "100.00",
"deductibility_amount_value": "400.00",
"foreign_business_base": null,
"country_dep": "",
"country_rec": ""
}
],
"tags": [],
"attachments": [
{
"id": 8904,
"name": "Rechnung.pdf",
"size": 10700
}
],
"vatin": "",
"country": "",
"description": "",
"create_date": "2015-01-01T11:00:00",
"update_date": "2015-01-01T11:00:00",
},
{
"id": 6783,
"status": "1",
"title": "Servermiete",
"document_number": "1-2",
"date": "2015-01-02",
"date_invoice": "2015-01-02",
"date_delivery": "2015-01-02",
"date_order": null,
"costcentre": null
"amounts": [
{
"group": "2",
"bankaccount": {
"id": 1255,
"name": "Kreditkarte"
},
"costaccount": {
"id": 2369,
"name": "Lizenzgebühren"
},
"purchasetaxaccount": {
"id": 3476,
"name": "IG Erwerb von Leistungen"
},
"amount": "400.00",
"amount_after_tax": "400.00",
"tax_percent": "20.00",
"tax_value": "80.00",
"deductibility_tax_percent": "100.00",
"deductibility_tax_value": "80.00",
"deductibility_amount_percent": "100.00",
"deductibility_amount_value": "400.00",
"foreign_business_base": null,
"country_dep": "",
"country_rec": ""
}
],
"tags": [
{
"id": 9723,
"tag": 5680,
"name": "Server"
}
],
"attachments": [],
"vatin": "DE123456789",
"country": "DE",
"description": "",
"create_date": "2015-01-02T12:00:00",
"update_date": "2015-01-02T12:00:00",
}
]
}
Felder¶
- id:
Eindeutige Identifikationsnummer
- Format
- status:
Buchungsstatus
- Format
- Möglichkeiten
- 1 — gebucht2 — offen (siehe Liste der offenen Buchungen)3 — gelöscht (siehe Liste der gelöschten Buchungen)4 — importiert (siehe Liste der gelöschten Buchungen)
- title:
Buchungstitel
- Format
- String (max. 50 Zeichen)
- document_number:
Belegnummer
- Format
- String (Monat-Nummer)
- Anmerkung
- Die eindeutige Belegnummer setzt sich zusammen aus dem Monatund einer fortlaufenden Nummer pro Monat und ist nur fürBuchungen mit dem Status "1" vorhanden.
- date:
Buchungsdatum
- Format
- date_invoice:
Rechnungsdatum
- Format
- date_delivery:
Lieferdatum
- Format
- date_order:
Bestelldatum
- Format
- costcentre:
Kostenstelle
- Format
- Objektwerte
- Details
- Siehe Kostenstellen
- amounts:
Beträge
- Format
- Details
- Siehe Felder der Liste amounts
- tags:
Tags
- Format
- Details
- Siehe Felder der Liste tags
- attachments:
Anhänge
- Format
- Details
- vatin:
Umsatzsteuer Identifikationsnummer
- Format
- country:
Land
- Format
- Möglichkeiten
- Siehe Länder
- description:
Beschreibung
- Format
- create_date:
Datum/Zeit der Erstellung
- Format
- update_date:
Datum/Zeit des letzten Update
- Format
Felder (amounts)¶
Felder der Liste amounts (Beträge).
- group:
Einnahme oder Ausgabe
- Format
- Möglichkeiten
- 1 — Einnahme2 — Ausgabe
- bankaccount:
Zahlungsmittelkonto
- Format
- Objektwerte
- Siehe
- costaccount:
Steuerkonto
- Format
- Objektwerte
- Siehe
- purchasetaxaccount:
Umsatzsteuerkonto
- Format
- Objektwerte
- Siehe
- amount:
Bruttobetrag
- Format
- amount_after_tax:
NettoBetrag
- Format
- tax_percent:
Umsatzsteuer in %
- Format
- tax_value:
Umsatzsteuer in €
- Format
- deductibility_tax_percent:
Betrieblicher Anteil der Umsatzsteuer in %
- Format
- deductibility_tax_value:
Betrieblicher Anteil der Umsatzsteuer in €
- Format
- deductibility_amount_percent:
Betrieblicher Anteil des Nettobetrags in %
- Format
- deductibility_amount_value:
Betrieblicher Anteil des Nettobetrags in €
- Format
- foreign_business_base:
Ausländische Betriebsstätte
- Format
- Objektwerte
- Siehe
- country_dep:
Abgangsland
- Format
- Möglichkeiten
- Siehe Länder
- country_rec:
Mitgliedstaat des Verbrauchs
- Format
- Möglichkeiten
- Siehe Länder
Felder (attachments)¶
Felder der Liste attachments (Anhänge):
- id:
ID des Anhangs
- Format
- Siehe
- name:
Bezeichnung
- Format
- String (max. 50 Zeichen)
- size:
Dateigröße
- Format
Filter¶
- group:
Einnahme oder Ausgabe
- Format
- String
- Möglichkeiten
- 1 — Einnahmen2 — Ausgaben
- title:
Buchungstitel
- Format
- String (contains)
- Beispiele
- title=Servermietetitle_contains=miete
- date:
Buchungsdatum
- Format
- Datum (from, until)
- Beispiele
- date=2015-01-01date_from=2015-01-01&date_until=2015-01-31
- date_invoice:
Rechnungsdatum
- Format
- Datum (from, until)
- Beispiele
- date_invoice=2015-01-01date_invoice_from=2015-01-01&date_invoice_until=2015-01-31
- date_delivery:
Lieferdatum
- Format
- Datum (from, until)
- Beispiele
- date_delivery=2015-01-01date_delivery_from=2015-01-01&date_delivery_until=2015-01-31
- date_order:
Bestelldatum
- Format
- Datum (from, until)
- Beispiele
- date_order=2015-01-01date_order_from=2015-01-01&date_order_until=2015-01-31
- amount:
Bruttobetrag
- Format
- Dezimalzahl (min, max)
- Beispiele
- amount=100amount_min=100&amount_max=199.99
- amount_after_tax:
Nettobetrag
- Format
- Dezimalzahl (min, max)
- Beispiele
- amount_after_tax=100amount_after_tax_min=100&amount_after_tax_max=199.99
- bankaccount:
Zahlungsmittelkonto
- Format
- Ganzzahl (ID)
- Beispiele
- bankaccount=1254
- costaccount:
Steuerkonto
- Format
- Ganzzahl (ID)
- Beispiele
- costaccount=2361
- purchasetaxaccount:
Umsatzsteuerkonto
- Format
- Ganzzahl (ID)
- Beispiele
- purchasetaxaccount=3475
- costcentre:
Kostenstelle
- Format
- Ganzzahl (ID)
- Beispiele
- costcentre=4512
- foreign_business_base:
Ausländische Betriebsstätte
- Format
- Ganzzahl (ID)
- Beispiele
- foreign_business_base=5567
- country_dep:
Abgangsland
- Format
- String
- Möglichkeiten
- Siehe Länder
- country_rec:
Mitgliedstaat des Verbrauchs
- Format
- String
- Möglichkeiten
- Siehe Länder
- tag:
Tag
- Format
- Ganzzahl (ID)
- Beispiele
- tag=5684
- Hinweis
- Es handelt sich hier um die ID des Tags, nicht um die ID des Buchungstags.
- vatin:
Umsatzsteuer Identifikationsnummer
- Format
- String (contains)
- Beispiele
- vatin=DE123456789vatin_contains=DE
- description:
Beschreibung
- Format
- String (contains)
- Beispiele
- description=Honorarnotedescription_contains=honorar
- create_date:
Erstellungsdatum
- Format
- Datum/Zeit (from, until)
- Beispiele
- create_date=2015-01-01create_date_from=2015-01-01&create_date_until=2015-01-31create_date_from=2015-01-01T17:00:00
- Anmerkung
- Bei create_date_from und create_date_until ist sowohl ein Datum als auch eine Kombination Datum/Zeit möglich
- update_date:
Änderungsdatum
- Format
- Datum/Zeit (from, until)
- Beispiele
- update_date=2015-01-01update_date_from=2015-01-01&update_date_until=2015-01-31update_date_from=2015-01-01T17:00:00
- Anmerkung
- Bei update_date_from und update_date_until ist sowohl ein Datum als auch eine Kombination Datum/Zeit möglich
- has_attachments:
Anhänge vorhanden
- Format
- Boolean
- Beispiele
- has_attachments=true
Sortierung¶
- ordering:
Sortierung
- Möglichkeiten
- id, title, date, date_invoice, date_delivery, create_date, update_date
- Beispiele
- ordering=idordering=id,date
Liste der offenen Buchungen¶
Die Liste aller offenen Buchungen wird mit einem GET Request auf die URL der Liste abgefragt. Alle anderen Optionen (Felder, Filter, Sortierung) sind deckungsgleich mit der Listenansicht für gebuchte Buchungen.
/bookings/open/
Liste der gelöschten Buchungen¶
Die Liste aller gelöschten Buchungen wird mit einem GET Request auf die URL der Liste abgefragt. Alle anderen Optionen (Felder, Filter, Sortierung) sind deckungsgleich mit der Listenansicht für gebuchte Buchungen.
/bookings/deleted/
Liste der importierten Buchungen¶
Die Liste aller importierten Buchungen wird mit einem GET Request auf die URL der Liste abgefragt. Alle anderen Optionen (Felder, Filter, Sortierung) sind deckungsgleich mit der Listenansicht für gebuchte Buchungen.
/bookings/imported/
Bemerkung
Wenn eine importierte Buchung geändert wird (siehe Buchung ändern), ergibt sich automatisch eine reguläre oder offene Buchung – abhängig davon, ob ein Buchungsdatum bei der Änderung gesetzt wird. Eine importierte Buchung kann also nicht neuerlich als importierte Buchung abgespeichert werden.
Buchung Detail¶
Eine einzelne (gebuchte, offene, gelöschte oder importierte) Buchung wird mit einem GET–Request auf die Detail–URL abgefragt. Es sind dieselben Felder verfügbar wie bei der Listenansicht.
/bookings/{id}/
Buchung hinzufügen¶
Eine neue Buchung wird mit einem POST Request auf die Listen URL hinzugefügt. Der Request Body muss alle notwendigen Felder beinhalten, als Response wird die neue Buchung zurückgegeben.
Bemerkung
Die Angabe der Liste amounts ist bei einer Buchung verpflichtend.
/bookings/
Request Body¶
{
"title": "Honoratnote 0022015",
"date": "2015-01-03",
"amounts": [
{
"bankaccount": 1254,
"costaccount": 2361,
"purchasetaxaccount": 3475,
"amount": "2400.00", // Bruttobetrag
"tax_percent": "20.00",
"deductibility_tax_percent": "100.00",
"deductibility_amount_percent": "100.00",
"foreign_business_base": null,
"country_dep": "",
"country_rec": ""
}
]
}
Response¶
HTTP/1.0 201 CREATED
Content-Type: application/json; charset=utf-8
{
"id": 6784,
"status": "1",
"title": "Honoratnote 0022015",
"document_number": "1-3",
"date": "2015-01-03",
"date_invoice": null,
"date_delivery": null,
"date_order": null,
"costcentre": null,
"amounts": [
{
"group": "1", // Einnahme aufgrund von Steuerkonto
"bankaccount": {
"id": 1254,
"name": "Bankkonto"
},
"costaccount": {
"id": 2361,
"name": "Einnahmen"
},
"purchasetaxaccount": {
"id": 3475,
"name": "Umsatzsteuer Inland"
},
"amount": "2400.00",
"amount_after_tax": "2000.00",
"tax_percent": "20.00",
"tax_value": "400.00",
"deductibility_tax_percent": "100.00",
"deductibility_tax_value": "400.00",
"deductibility_amount_percent": "100.00",
"deductibility_amount_value": "2000.00",
"foreign_business_base": null,
"country_dep": "",
"country_rec": ""
}
],
"tags": [],
"attachments": [],
"vatin": "",
"country": "",
"description": "",
"create_date": "2015-01-03T11:00:00",
"update_date": "2015-01-03T11:00:00",
}
Felder¶
- title *:
Buchungstitel
- Format
- String (max. 50 Zeichen)
- date:
Buchungsdatum
- Format
- Hinweis
- Wenn kein Datum angegeben wird handelt es sich um eine offene Buchung.
- date_invoice:
Rechnungsdatum
- Format
- date_delivery:
Lieferdatum
- Format
- date_order:
Bestelldatum
- Format
- costcentre:
ID der Kostenstelle
- Format
- amounts *:
Beträge
- Format
- Details
- Siehe Felder der Liste amounts
- vatin:
Umsatzsteuer Identifikationsnummer
- Format
- String (max. 20 Zeichen)
- country:
Land
- Format
- Möglichkeiten
- Siehe Länder
- description:
Beschreibung
- Format
- Text (max. 500 Zeichen)
Felder (amounts)¶
Felder der Liste amounts (Beträge).
- bankaccount *:
ID des Zahlungsmittelkontos
- Format
- costaccount *:
ID des Steuerkontos
- Format
- purchasetaxaccount *:
ID des Umsatzsteuerkontos
- Format
- amount *:
Bruttobetrag
- Format
- tax_percent *:
Umsatzsteuer in %
- Format
- Möglichkeiten
- 0.00 ... 100.00
- deductibility_tax_percent *:
Betrieblicher Anteil der Umsatzsteuer in %
- Format
- Möglichkeiten
- 0.00 ... 100.00
- deductibility_amount_percent *:
Betrieblicher Anteil des Nettobetrags in %
- Format
- Möglichkeiten
- 0.00 ... 100.00
- foreign_business_base:
ID der ausländischen Betriebsstätte
- Format
- country_dep:
Abgangsland
- Format
- Möglichkeiten
- Siehe Länder
- country_rec:
Mitgliedstaat des Verbrauchs
- Format
- Möglichkeiten
- Siehe Länder
Buchung ändern¶
Eine bestehende Buchung kann mit einem PATCH oder PUT Request auf die Detail URL geändert werden.
/bookings/{id}/
Request (PATCH)¶
Content-Type: application/json; charset=utf-8
{
"costcentre": 2,
"amounts": [
{
"bankaccount": 9,
"costaccount": 148,
"purchasetaxaccount": 20,
"amount": "3600.00",
"tax_percent": "20.00",
"deductibility_tax_percent": "100.00",
"deductibility_amount_percent": "100.00",
"foreign_business_base": null,
"country_dep": "",
"country_rec": ""
}
]
}
Bei einem PATCH Request ist zu beachten, dass die Liste amounts nur als Ganzes geändert werden kann (und nicht einzelne Elemente der Liste).
Request (PUT)¶
Content-Type: application/json; charset=utf-8
{
"title": "Honoratnote 0022015",
"date": "2015-01-03",
"costcentre": 2,
"amounts": [
{
"bankaccount": 9,
"costaccount": 148,
"purchasetaxaccount": 20,
"amount": "3600.00",
"tax_percent": "20.00",
"deductibility_tax_percent": "100.00",
"deductibility_amount_percent": "100.00",
"foreign_business_base": null,
"country_dep": "",
"country_rec": ""
}
]
}
Response¶
Als Response wird die komplette geänderte Buchung zurückgegeben (siehe Response beim Hinzufügen einer Buchung).
Buchung löschen¶
Eine Buchung wird mit einem DELETE Request auf die Detail URL gelöscht.
Eine Buchung kann aber nicht tatsächlich gelöscht werden. Vielmehr wird der Status auf gelöscht gesetzt und die Buchung ist unter gelöschte Buchungen (siehe Liste der gelöschten Buchungen) aufgelistet. Eine gelöschte Buchung kann wiederhergestellt werden.
/bookings/{id}/
Response¶
Als Response wird die komplette geänderte Buchung zurückgegeben (siehe Response beim Hinzufügen einer Buchung).
Das Feld status wurde auf den Wert "3" gesetzt.
Buchung wiederherstellen¶
Eine gelöschte Buchung kann wiederhergestellt werden, d.h. der Status wird von gelöscht auf gebucht (falls ein Datum vorhanden ist) oder offen (falls kein Datum vorhanden ist) gesetzt.
/bookings/{id}/restore/
Response¶
Als Response wird die komplette geänderte Buchung zurückgegeben (siehe Response beim Hinzufügen einer Buchung).
Das Feld status wurde auf den Wert "1" (wenn ein Datum vorhanden ist) oder "2" (wenn kein Datum vorhanden ist) gesetzt.