Skip to content
Back to skills

Zelffactuur

ASecurity

Importeer een verkoopfactuur die je opdrachtgever namens jou heeft gemaakt (self-billing / "factuur uitgereikt door afnemer"). Telt als omzet — net als /factuur — maar je maakt 'm niet zelf en genereert geen PDF; je neemt het bestaande document over met zijn eigen factuurnummer.

  • 2 stars
  • 0 votes
  • 0 copies
  • 2 views
  • Added October 14, 2026
ai-agentsgobashnode

Works with

  • cli

Security analysis

A100/100

Scanned October 14, 2026

npx -y skills add mathijs-oord/vink-plugin --skill zelffactuur --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Zelffactuur?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Zelffactuur
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/mathijs-oord-zelffactuur/badge)](https://www.skillsdirectory.com/skills/mathijs-oord-zelffactuur)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: zelffactuur
description: Importeer een verkoopfactuur die je opdrachtgever namens jou heeft gemaakt (self-billing / "factuur uitgereikt door afnemer"). Telt als omzet — net als /factuur — maar je maakt 'm niet zelf en genereert geen PDF; je neemt het bestaande document over met zijn eigen factuurnummer.
allowed-tools:
  - Bash(node "${CLAUDE_PLUGIN_ROOT}/lib/admin.mjs" *)
  - Bash(mkdir -p facturen/*)
  - Bash(cp * facturen/*)
  - Read
  - Write
---

# Zelffactuur / self-billing importeren

De gebruiker geeft een **verkoopfactuur** op die hij **niet zelf heeft gemaakt** — een
opdrachtgever of intermediair (bv. een detacheerder/bemiddelaar zoals Yacht, Hays, Tentoo)
heeft die namens hem uitgereikt op basis van goedgekeurde uren. Dit is **omzet**
(verkoopfactuur), géén kost.

Belangrijk onderscheid (zie `${CLAUDE_PLUGIN_ROOT}/rules/self-billing.md`):
| | Verkoopfactuur (`/factuur`) | Self-billing (`/zelffactuur`) | Inkoopfactuur (`/bon`) |
|--|--|--|--|
| Richting | uitgaand, ik maak 'm | inkomend, afnemer maakt 'm | inkomend |
| Wat | omzet | **omzet** | kosten |
| BTW | verschuldigd 1a/1b | **verschuldigd 1a/1b** | voorbelasting 5b |

## Stappen

### 1. Lees het document
Lees de PDF/afbeelding en extraheer:
- **Factuurnummer** = dat van de opdrachtgever/intermediair (bv. `IRB172600055`). **Niet** jouw
  eigen `YYYY-NNNN`-reeks en **niet** `next-invoice-number` gebruiken.
- **Factuurdatum**, **vervaldatum**.
- **Opdrachtgever** (de afnemer die de factuur uitreikt — bv. Voorbeeld Opdrachtgever B.V.) +
  adres + diens **BTW-nummer** (staat meestal onderaan, bv. "Btw-nummer … NL000000000B01").
- **Regels**: omschrijving, aantal, tarief, bedrag (bv. "Normale uren 32,00 × 95,00 = 3.040,00").
- **Subtotaal (excl. BTW)**, **BTW-tarief + bedrag**, **totaal**.

### 2. Bevestig dat het self-billing is
Self-billing als het document tekst bevat als **"factuur uitgereikt door (de) afnemer"**,
"self-billing", "zelffacturering" of "invoice issued by the recipient". Dan `self_billing=true`.
Een gewone verkoopfactuur die je elders maakte en alleen wilt importeren: `self_billing=false`,
`source=imported`. Beide tellen als omzet.

> Let op (wettelijk): bij self-billing mag je **niet** óók zelf een `/factuur` sturen voor dezelfde
> levering. Importeer 'm hier; maak 'm niet met `/factuur`.

### 3. BTW
Vrijwel altijd NL-omzet met verschuldigde BTW: `vat_percentage` van het document (meestal 21,
soms 9), `vat_reverse_charged=false`. Alleen verlegd als het document dat expliciet vermeldt.

### 4. Match/maak de opdrachtgever als klant
Zoek de opdrachtgever in `data/clients.csv` (fuzzy). Niet gevonden → voeg een rij toe met nieuw
`id` (`c_002`, … hoogste +1): naam, adres, postcode, plaats, land, `country_type=nl`, het
BTW-nummer van het document, evt. `attention`.

### 5. Dedup-check
Lees `data/invoices.csv`; staat dit factuurnummer er al in → meld dat en stop (niet dubbel
importeren).

### 6. Preview (compact) → bevestiging
Toon: factuurnummer (van opdrachtgever), opdrachtgever, datum, regels, subtotaal/BTW/totaal,
en "self-billing: ja/nee". Vraag bevestiging.

### 7. Na bevestiging: schrijf weg + bewaar origineel
1. **Bewaar het originele bestand** in het kwartaalmapje `facturen/<YYYY-QN>/` (bewaarplicht),
   met `<YYYY-QN>` = kwartaal uit de factuurdatum (Q1=jan–mrt, … Q4=okt–dec). Maak het mapje
   eerst aan: `mkdir -p facturen/<YYYY-QN>`. Gebruik de bestandsnaam met het factuurnummer, bv.
   `facturen/2026-Q2/IRB172600055.pdf`. Heb je alleen het pad naar het bronbestand van de
   gebruiker → kopieer dat hierheen. Zet `pdf_path` op dat volledige pad. (Geen PDF genereren —
   die bestaat al.)
2. **invoices.csv:** `node "${CLAUDE_PLUGIN_ROOT}/lib/admin.mjs" append data/invoices.csv '<row>'` met:
   `number` (van opdrachtgever)`, date, due_date, client_id, client_name, subtotal,
   vat_percentage, vat_amount, total, vat_reverse_charged="false", status="sent",
   source="imported", self_billing` (true/false)`, reference, notes, pdf_path, created_at` (vandaag).
3. **invoice_items.csv:** per regel een append met
   `invoice_number, line_no, description, quantity, unit, rate, amount, vat_percentage`.
   Eenheid: "uren"/"normale uren" → `hours`; anders kies de passende `unit`.

Gebruik exact deze kolomnamen: `append` stopt met een fout (en schrijft niets) als een gevuld veld
geen kolom heeft in het CSV-bestand.

Meld kort: factuurnummer, opdrachtgever, totaal, dat het als omzet is geboekt (rubriek 1a/1b),
en dat het origineel in `facturen/<YYYY-QN>/` staat. Het telt automatisch mee in `/aangifte`.

## Belangrijk
- `status="sent"` (telt mee in de BTW-aangifte). Markeer 'm later op `paid` met `/betaald`
  (zet ook de betaaldatum `paid_at`) als hij betaald is.
- De urenspecificatie (vaak pagina 2) hoeft niet als losse regels — neem de factuurregel(s) van
  pagina 1 over. Bewaar de volledige PDF (incl. specificatie) voor de bewaarplicht.
- Geen verwijder-actie via de skill — corrigeren doet de gebruiker met de hand in de CSV.

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.