Als zelfstandige zonder personeel (ZZP-er) heb je een aantal belastingverplichtingen. Het gaat hier om aanslag- en aangifte-belasting. Respectievelijk komt dit neer op inkomstenbelasting en omzetbelasting (BTW-aangifte).
Inkomstenbelasting dient achteraf betaald te worden - of via een voorschot - over een heel jaar. Hierbij is een nader te bepalen percentage over het belastbaar-inkomen van toepassing.
De omzetbelasting dient per kwartaal ingediend te worden.
Zoals eerder aangegeven dient over het belastbaar-inkomen inkomensafhankelijke belasting betaald te worden. Dit kan weer opgedeeld worden in inkomstenbelasting (35% - 50%) en een bijdrage in het kader van de zorgverzekeringswet (+/- 5%).
Het belastbaar-inkomen bestaat allereerst uit de winst, dit kan berekend worden door de zakelijke kosten van de omzet af te halen.
Winst = omzet - zakelijke kosten
Wanneer de winst is uitgerekend mogen de onderstaande bedragen van de winst afgetrokken worden.
Korting | Omschrijving | Bedrag |
Zelfstandigenaftrek | > 1225 uur per jaar besteed aan onderneming | € 5.030 |
Startersaftrek | < 3 jaar geleden gestart | € 2.123 |
MKB-winstvrijstelling | voor elke ondernemer | 14% |
Belastbaar-inkomen = winst - kortingen
Afhankelijk van de hoogte van het belastbaar-inkomen wordt het onderstaande percentage toegepast voor de inkomsten belasting.
2023 | Belastbaar-inkomen | Belastingschijf |
1 | < 73.031 | 36,93% |
2 | >= 73.031 | 49,50% |
Belastbaar-inkomen = belastbaar-inkomen * percentage belastingschijf
Tot slot dient van het overgebleven belastbaar-inkomen de heffings- en arbeidskorting te worden toegepast.
De omzetbelasting wordt ook wel BTW genoemd, dit staat voor belasting over toegevoegde waarde en kan maandelijks of per kwartaal ingediend worden.
Alle ontvangen bedragen aan BTW dient afgedragen te worden en zal worden verrekend met de betaalde BTW over zakelijke kosten.
Stel je voor, je hebt een dienst verleend of product verkocht voor € 1.000,00. Boven dit bedrag ontvang je € 210,00 aan BTW. Als je in dezelfde periode bijvoorbeeld een kantoor hebt gehuurd voor € 500, betaal je hier boven op nog eens € 105 aan BTW. Dit betekent dat je uiteindelijk maar € 105 (210 - 105) aan BTW hoeft af te dragen.
Met behulp van het onderstaande python script worden alle PDF-bestanden ingelezen - inclusief submappen - en samengevat in een csv-bestand.
import pdfplumber import re import os import csv def getAmount(pdf_path): with pdfplumber.open(pdf_path) as pdf: for page in pdf.pages: text = page.extract_text() matches = re.findall(r"€\s*(\d+,\d{2})", text) if matches: amounts = [float(match.replace(',', '.')) for match in matches] return max(amounts) if amounts else None return None def getDescription(pdf_path): product_descriptions = "" with pdfplumber.open(pdf_path) as pdf: for page in pdf.pages: text = page.extract_text() lines = text.split('\n') for line in lines: if "Omschrijving" in line or "Productnaam" in line or "Samenvatting" in line: description_index = lines.index(line) + 1 if description_index < len(lines): product_descriptions.append(lines[description_index]) return product_descriptions def iterateFolders(folder_path, output_csv): script_dir = os.path.dirname(os.path.abspath(__file__)) with open(output_csv, 'w', newline='', encoding='utf-8') as csvfile: # csv_writer = csv.writer(csvfile) csv_writer = csv.writer(csvfile, delimiter=',', quotechar='"', quoting=csv.QUOTE_MINIMAL) csv_writer.writerow(["Subfolder", "Bestandsnaam", "Bedrag", "BTW", "Omschrijving"]) for root, dirs, files in os.walk(folder_path): for file in files: if file.endswith('.pdf') and not file.startswith('._') and not file.startswith('~$'): pdf_path = os.path.join(root, file) if root != script_dir: relative_subfolder_path = os.path.relpath(root, script_dir) else: relative_subfolder_path = "Hoofdmap" try: amount = getAmount(pdf_path) vat = amount * 100 / 121 file_no_extension = file.replace(".pdf", "") description = str(getDescription(pdf_path)) if description == "": description = "onbekend" csv_writer.writerow([relative_subfolder_path , file_no_extension, amount, vat, description]) print(relative_subfolder_path, file_no_extension, amount, vat, description) except Exception as e: csv_writer.writerow([relative_subfolder_path, file, 0, 0, "Mislukt"]) print(relative_subfolder_path, file_no_extension, 0, 0, "Mislukt") script_dir = os.path.dirname(os.path.abspath(__file__)) output_csv = "facturen.csv" execute = input("Wilt u nu alle hoogste bedragen uit de PDF facturen inlezen en exporteren naar het bestand " + output_csv + " j/n? ").lower().strip() if execute == "j": iterateFolders(script_dir, output_csv) print ("Het exportbestand is succesvol geëxporteerd: ", script_dir, "/", output_csv)