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,
            "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"
                }
            ],
            "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",
            "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"
                }
            ],
            "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 — gebucht
2 — offen (siehe Liste der offenen Buchungen)
3 — gelöscht (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 Monat
und einer fortlaufenden Nummer pro Monat und ist nur für
Buchungen mit dem Status "1" vorhanden.
date:

Buchungsdatum

Format
date_invoice:

Rechnungsdatum

Format
date_delivery:

Lieferdatum

Format
costcentre:

Kostenstelle

Format
Objektwerte
ID als Ganzzahl, Name als String
Siehe
amounts:

Beträge

Format
Details
tags:

Tags

Format
Details
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 — Einnahme
2 — Ausgabe
bankaccount:

Zahlungsmittelkonto

Format
Objektwerte
ID als Ganzzahl, Name als String
Siehe
costaccount:

Steuerkonto

Format
Objektwerte
ID als Ganzzahl, Name als String
Siehe
purchasetaxaccount:

Umsatzsteuerkonto

Format
Objektwerte
ID als Ganzzahl, Name als String
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

Felder (tags)

Felder der Liste tags (Tags).

id:

ID des Buchungstags

Format
Siehe
tag:

ID des Tags

Format
Siehe
name:

Bezeichnung

Format
String (min. 3 Zeichen, max. 40 Zeichen)

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 — Einnahmen
2 — Ausgaben
title:

Buchungstitel

Format
String (contains)
Beispiele
title=Servermiete
title_contains=miete
date:

Buchungsdatum

Format
Datum (from, until)
Beispiele
date=2015-01-01
date_from=2015-01-01&date_until=2015-01-31
date_invoice:

Rechnungsdatum

Format
Datum (from, until)
Beispiele
date_invoice=2015-01-01
date_invoice_from=2015-01-01&date_invoice_until=2015-01-31
date_delivery:

Lieferdatum

Format
Datum (from, until)
Beispiele
date_delivery=2015-01-01
date_delivery_from=2015-01-01&date_delivery_until=2015-01-31
amount:

Bruttobetrag

Format
Dezimalzahl (min, max)
Beispiele
amount=100
amount_min=100&amount_max=199.99
amount_after_tax:

Nettobetrag

Format
Dezimalzahl (min, max)
Beispiele
amount_after_tax=100
amount_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
purchasetaxccount:

Umsatzsteuerkonto

Format
Ganzzahl (ID)
Beispiele
purchasetaxccount=3475
costcentre:

Kostenstelle

Format
Ganzzahl (ID)
Beispiele
costcentre=4512
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=DE123456789
vatin_contains=DE
description:

Beschreibung

Format
String (contains)
Beispiele
description=Honorarnote
description_contains=honorar
create_date:

Erstellungsdatum

Format
Datum/Zeit (from, until)
Beispiele
create_date=2015-01-01
create_date_from=2015-01-01&create_date_until=2015-01-31
create_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-01
update_date_from=2015-01-01&update_date_until=2015-01-31
update_date_from_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, document_number, date
Beispiele
ordering=id
ordering=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/

Buchung Detail

Eine einzelne (gebuchte, offene oder gelöschte) 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"
        }
    ]
}

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,
    "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"
        }
    ],
    "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
costcentre:

ID der Kostenstelle

Format
amounts *:

Beträge

Format
Details
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

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"
        }
    ]
}

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"
         }
     ]
}

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}/

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.