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.
Belastingdienst 2023
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.
Belastingdienst 2023
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.
06 | def getAmount(pdf_path): |
07 | with pdfplumber. open (pdf_path) as pdf: |
08 | for page in pdf.pages: |
09 | text = page.extract_text() |
10 | matches = re.findall(r "€\s*(\d+,\d{2})" , text) |
12 | amounts = [ float (match.replace( ',' , '.' )) for match in matches] |
13 | return max (amounts) if amounts else None |
16 | def getDescription(pdf_path): |
17 | product_descriptions = "" |
18 | with pdfplumber. open (pdf_path) as pdf: |
19 | for page in pdf.pages: |
20 | text = page.extract_text() |
21 | lines = text.split( '\n' ) |
23 | if "Omschrijving" in line or "Productnaam" in line or "Samenvatting" in line: |
24 | description_index = lines.index(line) + 1 |
25 | if description_index < len (lines): |
26 | product_descriptions.append(lines[description_index]) |
27 | return product_descriptions |
29 | def iterateFolders(folder_path, output_csv): |
30 | script_dir = os.path.dirname(os.path.abspath(__file__)) |
32 | with open (output_csv, 'w' , newline = ' ', encoding=' utf - 8 ') as csvfile: |
34 | csv_writer = csv.writer(csvfile, delimiter = ',' , quotechar = '"' , quoting = csv.QUOTE_MINIMAL) |
35 | csv_writer.writerow([ "Subfolder" , "Bestandsnaam" , "Bedrag" , "BTW" , "Omschrijving" ]) |
37 | for root, dirs, files in os.walk(folder_path): |
39 | if file .endswith( '.pdf' ) and not file .startswith( '._' ) and not file .startswith( '~$' ): |
40 | pdf_path = os.path.join(root, file ) |
41 | if root ! = script_dir: |
42 | relative_subfolder_path = os.path.relpath(root, script_dir) |
44 | relative_subfolder_path = "Hoofdmap" |
46 | amount = getAmount(pdf_path) |
47 | vat = amount * 100 / 121 |
48 | file_no_extension = file .replace( ".pdf" , "") |
49 | description = str (getDescription(pdf_path)) |
51 | description = "onbekend" |
52 | csv_writer.writerow([relative_subfolder_path , file_no_extension, amount, vat, description]) |
53 | print (relative_subfolder_path, file_no_extension, amount, vat, description) |
54 | except Exception as e: |
55 | csv_writer.writerow([relative_subfolder_path, file , 0 , 0 , "Mislukt" ]) |
56 | print (relative_subfolder_path, file_no_extension, 0 , 0 , "Mislukt" ) |
58 | script_dir = os.path.dirname(os.path.abspath(__file__)) |
59 | output_csv = "facturen.csv" |
61 | execute = input ( "Wilt u nu alle hoogste bedragen uit de PDF facturen inlezen en exporteren naar het bestand " + output_csv + " j/n? " ).lower().strip() |
64 | iterateFolders(script_dir, output_csv) |
65 | print ( "Het exportbestand is succesvol geëxporteerd: " , script_dir, "/" , output_csv) |