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 — 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
date_order

Bestelldatum

Format
costcentre

Kostenstelle

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

Ausländische Betriebsstätte

Format
Objektwerte
ID als Ganzzahl, vatin als String
Siehe
country_dep

Abgangsland

Format
Möglichkeiten
Siehe Länder
country_rec

Mitgliedstaat des Verbrauchs

Format
Möglichkeiten
Siehe Länder

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
date_order

Bestelldatum

Format
Datum (from, until)
Beispiele
date_order=2015-01-01
date_order_from=2015-01-01&date_order_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
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=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, date, date_invoice, date_delivery, create_date, update_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",
            "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
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}/

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.