The Bookie stelt een API beschikbaar voor beperkte functionaliteiten.
Onderwerpen
- Authenticatie
- Contacten bekijken
- Contacten aanmaken / updaten
- Verkoopfacturen bekijken
- Verkoopfacturen aanmaken
- Verkoopfacturen als betaalt registreren
- Inkoopfacturen bekijken
- Inkoopfacturen aanmaken
- Grootboekrekeningen bekijken
- Memoriaalboekingen aanmaken / updaten (documentatie binnenkort beschikbaar)
Authenticatie
Authenticatie gaat via OAuth2. Voordat je aan de slag kunt moet bij The Bookie een client_id en client_secret worden aangevraagd. Dit kan via het emailadres development@thebookie.nl. Wij hebben een naam nodig van de applicatie die toegang vraagt en een redirect url, waarnaar, na een succesvolle koppeling met een account, geredirect kan worden.
Om te beginnnen met de autorisatie flow ga je naar het volgende endpoint:
https://app.thebookie.nl/nl/o/authorize/?response_type=code&client_id=e7ah0e13Plz9sIV4Aj9fLkL4saNDQdYIn1CPKVEa&redirect_uri=http://test.redirect.url/
Je zult nu het volgende scherm zien dat vraagt om autorisatie van de gebruiker. Wanneer de gebruiker toegang heeft tot meerdere administraties, wordt gevraagd voor welke administratie de gebruiker toegang wil verlenen.
Als redirect_url in dit voorbeeld hebben we http://test.redirect.url/ gebruikt. Na een succesvolle autorisatie zou je nu het volgende url moeten krijgen:
http://test.redirect.url/?code=uVqLxiHDKIirldDZQfSnDsmYW1Abj2&admin_id=3496
De autorisatie code is 60 seconden geldig.
Let op: De OAuth2 autorisatie van The Bookie wijkt af van standaard in de zin dat naast het teruggeven van een autorisatie code, ook een admin_id als parameter wordt teruggegeven. Dit admin_id is belangrijk omdat het in bijna alle requests worden gebruikt.
Nu kan een access token worden opgevraagd. Het volgende cURL command kan als voorbeeld worden gebruikt:
curl -X POST \ -H "Cache-Control: no-cache" \ -H "Content-Type: application/x-www-form-urlencoded" \ "https://app.thebookie.nl/nl/o/token/" \ -d "client_id=e7ah0e13Plz9sIV4Aj9fLkL4saNDQdYIn1CPKVEa" \ -d "client_secret=jfOGDUhTSF8LaqwzqHZ3fMFVzf3YXpz8GQXXcJidWCX247WZnHk5hgYtrPkDFlbL8d1Clj4PzHFrezpy1lN5U2QO79vQnYJMfkpo0OLht3xepDZSD0PGgyIb4rdAQSVi" \ -d "code=uVqLxiHDKIirldDZQfSnDsmYW1Abj2" \ -d "redirect_uri=http://test.redirect.url/" \ -d "grant_type=authorization_code" \ -d "admin_id=3496"
Je zou nu de volgende response moeten krijgen:
{ "access_token": "jooqrnOrNa0BrNWlg68u9sl6SkdFZg", "expires_in": 36000, "token_type": "Bearer", "scope": "read write", "refresh_token": "HNvDQjjsnvDySaK0miwG4lttJEl9yD" }
Om toegang tot resources te krijgen gebruik je het access token. Bijvoorbeeld:
curl \ -H "Authorization: Bearer jooqrnOrNa0BrNWlg68u9sl6SkdFZg" \ -X GET https://app.thebookie.nl/nl/api/e1/resource
Refresh Token
curl -X POST \ -H "Cache-Control: no-cache" \ -H "Content-Type: application/x-www-form-urlencoded" \ "https://app.thebookie.nl/nl/o/token/" \ -d "client_id=e7ah0e13Plz9sIV4Aj9fLkL4saNDQdYIn1CPKVEa" \ -d "client_secret=jfOGDUhTSF8LaqwzqHZ3fMFVzf3YXpz8GQXXcJidWCX247WZnHk5hgYtrPkDFlbL8d1Clj4PzHFrezpy1lN5U2QO79vQnYJMfkpo0OLht3xepDZSD0PGgyIb4rdAQSVi" \ -d "refresh_token=HNvDQjjsnvDySaK0miwG4lttJEl9yD" \ -d "redirect_uri=http://test.redirect.url/" \ -d "grant_type=refresh_token" \ -d "admin_id=3496"
Contacten
Lijst
Endpoint:
GET https://app.thebookie.nl/nl/api/e1/contacts/?admin_id=admin_id
Url parameters:
- admin_id (verplicht)
- search (zoeken op bedrijfsnaam)
- is_client (True/False filteren op klant)
- is_supplier (True/False filteren op leverancier)
DETAIL / UPDATE / PATCH / DELETE
Endpoint:
GET https://app.thebookie.nl/nl/api/e1/contacts/contact_id/
Url parameters:
- contact_id (INT verplicht)
response:
{ "id": 97645, "organisation_name": "Gladiool Tuinarchitecten", "street": "", "street_number": "", "street_number_addition": null, "extra_address_line": "", "postal_code": "", "town": "", "country": "", "organisation_kvk_number": null, "organisation_btw_number": null, "is_supplier": true, "is_client": true, "email": null, "telephone_number": null, "mobile_number": null, "status": 1, "first_name": null, "last_name": null, "associated_ledger_account": [], "btw_shifted_preset": "NONE", "total_sales_amount_excl_btw": 0, "total_sales_amount_payable": 0, "total_purchase_amount_excl_btw": 0, "total_purchase_amount_payable": 0, "extra_info": "" }
Aanmaken
Endpoint:
POST https://app.thebookie.nl/nl/api/e1/contacts/create/
Voorbeeld:
{ "admin_id": 3496, "organisation_name": "Gladiool Tuinarchitecten", "street": "Waterstraat", "street_number": "9999", "street_number_addition": null, "extra_address_line": null, "postal_code": "3511BW", "town": "Utrecht", "country": null, "organisation_kvk_number": null, "organisation_btw_number": null, "is_supplier": true, "is_client": true, "email": "ricky@gladiool.nl", "telephone_number": null, "mobile_number": null, "first_name": "Ricky", "last_name": "Gladiool", "extra_info": "" }
Verkoopfacturen
Lijst
Endpoint:
GET https://app.thebookie.nl/nl/api/e1/sales-journals/?admin_id=admin_id
Url parameters:
- admin_id (verplicht)
- search (zoeken op bedrijfsnaam)
- invoice_number (zoeken op factuurnnummer
Aanmaken
Endpoint:
POST https://app.thebookie.nl/nl/api/e1/sales-journals/create/
Voorbeeld:
{ "admin_id": 3496, "contact_id": 10689, "invoice_number": 2021231, "invoice_date": "2021-10-12", "btw_shifted": "NONE", "journal_entry_lines": [ { "description": "Boekregel 1", "btw_type": "PROCENT_21", "amount": "1200.0", "quantity": "2.00" } ], "attachment": null, }
btw_shifted opties: ["NONE", "NON_EU", "EU"]
btw_type opties: ["PROCENT_9", "PROCENT_21", "PROCENT_0"]
Optioneel kan een PDF als bijlage meegestuurd worden. Dit gaat in de vorm van een Base64 encoded string. Meer info.
DETAIL / UPDATE / PATCH / DELETE
Endpoint:
https://app.thebookie.nl/nl/api/e1/sales-journals/id/
Om boekregels aan te passen, moet het id worden meegegeven van de boekregel. Doe je dit niet, dan wordt een nieuwe boekregel aan de factuur toegevoegd. Wil je een boekregel van het verkoopfactuur verwijderen, dan moet "deleted": true
worden toegevoegd. In het volgende voorbeeld wordt in een enkele call een regel aan het factuur toegevoegd en één verwijderd.
{ "journal_entry_lines": [ { "id": 12312312, "deleted": true }, { "description": "Boekregel 2", "btw_type": "PROCENT_9", "amount": "10.0", "quantity": "1.00" } ] }
Verkoopfactuur betalingen
In feite wordt bij het betalen van een factuur een memoriaalboeking aangemaakt. Hier is voor het gemak een speciaal endpoint voor, die de request vergemakkelijkt.
GET https://app.thebookie.nl/nl/api/e1/sales-journals/id/payments/
Geeft een lijst met betalingen (memoriaalboekingen) gekoppeld aan de factuur.
POST https://app.thebookie.nl/nl/api/e1/sales-journals/id/payments/create/
Betaling registreren voor de verkoopfactuur
Voorbeeldrequest:
{ "amount": "120.00", "date": "2021-10-13" }
Response:
{ "status": "payment successfully created" }
Standaard wordt de betaling geboekt op grootboekrekening 1300 - Debiteuren. Optioneel kan een grootboekrekeningnummer aan de request worden toegevoegd om de boeking op een ander grootboekrekeningnummer te doen.
{ "amount": "120.00", "date": "2021-10-13", "ledger_account_number": 2110 }
Wanneer de het volledig openstaande bedrag van de factuur is voldaan, zal de status van de factuur automatisch veranderen naar "Voldaan".
Inkoopfacturen
Lijst
Endpoint:
GET https://app.thebookie.nl/nl/api/e1/purchase-journals/?admin_id=admin_id
Url parameters:
- admin_id (verplicht)
- search (zoeken op bedrijfsnaam, boeknummer of betalingskenmerk)
- working_year: Filteren op jaar
- working_period: Filteren op kwartaal
- amount_from: bedragen groter dan
- amount_until: bedragen kleiner dan
Aanmaken
Endpoint:
POST https://app.thebookie.nl/nl/api/e1/purchase-journals/create/
Voorbeeld:
{ "admin_id": 3496, "contact_id": 10689, "payment_ref": 2021231, "invoice_date": "2021-10-12", "btw_shifted": "NONE", "journal_entry_lines": [ { "description": "Boekregel 1", "btw_type": "PROCENT_21", "amount": "1200.0", "amount_btw": "252.0", "master_ledger_account": 4140, } ], "attachment": null }
btw_shifted opties: ["NONE", "NON_EU", "EU"]
btw_type opties: ["PROCENT_9", "PROCENT_21", "PROCENT_0"]
Optioneel kan een PDF als bijlage meegestuurd worden. Dit gaat in de vorm van een Base64 encoded string. Meer info.
Reverse Billing
In het geval van Reverse Billing bevat de inkoopfactuur omzet. Er wordt dan een omzetrekening gekoppeld aan de boekregel, (8002: Verkopen 21%, 8001: Verkopen laag/9% of 8000 Verkopen vrijgesteld van btw)
Ook moet reverse_billing: true;
worden meegegeven in de request body.
Voorbeeld:
{ "admin_id": 3496, "contact_id": 10689, "payment_ref": 2021231, "invoice_date": "2021-10-12", "btw_shifted": "NONE", "reverse_billing": true, "journal_entry_lines": [ { "description": "Boekregel 1", "btw_type": "PROCENT_21", "amount": "1000.0", "amount_btw": "210.0", "master_ledger_account": 8002, } ] }
DETAIL / UPDATE / PATCH / DELETE
Endpoint:
https://app.thebookie.nl/nl/api/e1/purchase-journals/id/
Om boekregels aan te passen, moet het id worden meegegeven van de boekregel. Doe je dit niet, dan wordt een nieuwe boekregel aan de factuur toegevoegd. Wil je een boekregel van het inkoopfactuur verwijderen, dan moet "deleted": true
worden toegevoegd. In het volgende voorbeeld wordt in een enkele call een regel aan het factuur toegevoegd en één verwijderd.
{ "journal_entry_lines": [ { "id": 12312312, "deleted": true }, { "description": "Boekregel 2", "btw_type": "PROCENT_9", "amount": "10.0", "amount_btw": "0.90", "master_ledger_account": 4140, } ] }
Grootboekrekeningen
Lijst
Endpoint:
GET https://app.thebookie.nl/nl/api/e1/ledger/?admin_id=admin_id
Url parameters:
- admin_id (verplicht)
- master_ledger_account (INT grootboekrekeing nummer)
DETAIL
GET https://app.thebookie.nl/nl/api/e1/ledger/id/
Memoriaal
Lijst
Endpoint:
GET https://app.thebookie.nl/nl/api/e1/general-journals/?admin_id=admin_id
Url parameters:
- admin_id (verplicht
DETAIL
GET https://app.thebookie.nl/nl/api/e1/general-journals/id/