{"id":392369,"date":"2026-10-29T07:56:03","date_gmt":"2026-10-29T07:56:03","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/mietverwaltung\/"},"modified":"2026-10-30T05:51:47","modified_gmt":"2026-10-30T05:51:47","slug":"mietfux","status":"publish","type":"plugin","link":"https:\/\/tg.wordpress.org\/plugins\/mietfux\/","author":15693827,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.3","stable_tag":"1.0.3","tested":"7.1.4","requires":"6.0","requires_php":"8.0","requires_plugins":null,"header_name":"Mietfux \u2013 Mietverwaltung f\u00fcr Vermieter","header_author":"Markus Hirn","header_description":"Verwaltung von Mietobjekten, Mietverh\u00e4ltnissen, Zahlungen (Soll\/Ist) und Mieterportal mit Schadensmeldung, Belegerfassung, AfA, Darlehen, Steuer-Auswertung (Anlage V), Betriebskostenabrechnung, Bankimport, Mahnwesen, Mieterh\u00f6hung, Mietvertrag\/\u00dcbergabeprotokoll, Kautionskonto, PDF-Erzeugung, Datenschutz-L\u00f6schkonzept und Backup.","assets_banners_color":"294878","last_updated":"2026-10-30 05:51:47","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/github.com\/sporcherla\/mietverwaltung","header_author_uri":"","rating":0,"author_block_rating":0,"active_installs":0,"downloads":94,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.2":{"tag":"1.0.2","author":"hirnmarkus","date":"2026-10-29 07:55:42","revision":3772335},"1.0.3":{"tag":"1.0.3","author":"hirnmarkus","date":"2026-10-30 05:51:47","revision":3774441}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3772335,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3772335,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256},"icon.svg":{"filename":"icon.svg","revision":3772335,"resolution":false,"location":"assets","locale":false}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3772335,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3772335,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.2","1.0.3"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3772335,"resolution":"1","location":"assets","locale":"","width":1280,"height":800},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3772335,"resolution":"2","location":"assets","locale":"","width":1280,"height":800},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3772335,"resolution":"3","location":"assets","locale":"","width":1280,"height":800},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3772335,"resolution":"4","location":"assets","locale":"","width":1280,"height":800},"screenshot-5.png":{"filename":"screenshot-5.png","revision":3772335,"resolution":"5","location":"assets","locale":"","width":1280,"height":800},"screenshot-6.png":{"filename":"screenshot-6.png","revision":3772335,"resolution":"6","location":"assets","locale":"","width":1280,"height":800},"screenshot-7.png":{"filename":"screenshot-7.png","revision":3772335,"resolution":"7","location":"assets","locale":"","width":1280,"height":800}},"screenshots":{"1":"Overview with open items \u2013 tick a month to book the rent payment","2":"Setup wizard","3":"Tenancy agreement options","4":"Service charge statement","5":"Tax report (Anlage V)","6":"Loan account with repayment schedule","7":"Tenant portal"}},"plugin_section":[262246],"plugin_tags":[9084,248117,5071,5075,248118],"plugin_category":[],"plugin_contributors":[289405],"plugin_business_model":[],"class_list":["post-392369","plugin","type-plugin","status-publish","hentry","plugin_section-dashboard-widgets","plugin_tags-germany","plugin_tags-landlord","plugin_tags-property-management","plugin_tags-rental","plugin_tags-tenant","plugin_contributors-hirnmarkus","plugin_committers-hirnmarkus"],"banners":{"banner":"https:\/\/ps.w.org\/mietfux\/assets\/banner-772x250.png?rev=3772335","banner_2x":"https:\/\/ps.w.org\/mietfux\/assets\/banner-1544x500.png?rev=3772335","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":"https:\/\/ps.w.org\/mietfux\/assets\/icon.svg?rev=3772335","icon":"https:\/\/ps.w.org\/mietfux\/assets\/icon.svg?rev=3772335","icon_2x":false,"generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/mietfux\/assets\/screenshot-1.png?rev=3772335","caption":"Overview with open items \u2013 tick a month to book the rent payment"},{"src":"https:\/\/ps.w.org\/mietfux\/assets\/screenshot-2.png?rev=3772335","caption":"Setup wizard"},{"src":"https:\/\/ps.w.org\/mietfux\/assets\/screenshot-3.png?rev=3772335","caption":"Tenancy agreement options"},{"src":"https:\/\/ps.w.org\/mietfux\/assets\/screenshot-4.png?rev=3772335","caption":"Service charge statement"},{"src":"https:\/\/ps.w.org\/mietfux\/assets\/screenshot-5.png?rev=3772335","caption":"Tax report (Anlage V)"},{"src":"https:\/\/ps.w.org\/mietfux\/assets\/screenshot-6.png?rev=3772335","caption":"Loan account with repayment schedule"},{"src":"https:\/\/ps.w.org\/mietfux\/assets\/screenshot-7.png?rev=3772335","caption":"Tenant portal"}],"raw_content":"<!--section=description-->\n<p><strong>Mietfux<\/strong> (\"Miet\" = rent, \"Fux\" = fox) puts everything a private landlord in Germany needs for one or more flats into a single plugin. All data stays in your own WordPress database \u2013 no cloud service, no data transfer to third parties, no external scripts.<\/p>\n\n<p>The user interface is available in German and English. The generated legal documents (tenancy agreement, house rules, information sheets) are in German because they implement German tenancy law (BGB, BetrKV, HeizkostenV, EStG).<\/p>\n\n<p><strong>Features<\/strong><\/p>\n\n<ul>\n<li><strong>Master data<\/strong> \u2013 properties, units (flat, garage, parking space), tenants with an optional spouse or partner as co-tenant, tenancies with additional units (flat + garage = one agreement, one total rent)<\/li>\n<li><strong>Payments<\/strong> \u2013 due\/paid per month, tick open items to book them, bank import (CSV \/ CAMT.053) with matching rules and duplicate detection<\/li>\n<li><strong>Receipts<\/strong> \u2013 cost type, tax year, service period, file upload with camera support; spreading of maintenance costs over 2\u20135 years; labour share for tenants (\u00a7 35a EStG)<\/li>\n<li><strong>Service charge statement<\/strong> \u2013 per BetrKV with allocation by area, persons, units or consumption; heating per HeizkostenV; pro rata on tenant change; letter as PDF<\/li>\n<li><strong>Tax reporting (Anlage V)<\/strong> \u2013 income, expenses by form line, depreciation, loan interest, prior-year comparison, CSV export<\/li>\n<li><strong>Depreciation<\/strong> \u2013 statutory rate by year built, itemised acquisition costs, land share, purchase contract PDF parsed locally in the browser, 15 % guard<\/li>\n<li><strong>Loans<\/strong> \u2013 repayment schedule, instalments to tick off, extra repayments, bank interest certificates<\/li>\n<li><strong>Tenancy agreement<\/strong> \u2013 complete residential agreement with annexes: house rules, heating\/ventilation leaflet, privacy notice, SEPA direct debit mandate, move-in\/move-out handover protocol<\/li>\n<li><strong>Deposit account<\/strong> (\u00a7 551 BGB), <strong>dunning<\/strong> (three levels), <strong>rent increases<\/strong> (\u00a7 558 \/ \u00a7 557b BGB)<\/li>\n<li><strong>Tenant portal<\/strong> via shortcode <code>[mietfux_portal]<\/code> \u2013 rent account, statements, released documents, damage reports, meter readings<\/li>\n<li><strong>Data protection<\/strong> \u2013 deletion concept with retention periods, anonymisation, Art. 15 GDPR access report<\/li>\n<li><strong>Setup wizard<\/strong>, in-app help, focus mode, backup\/restore as JSON, clean uninstall<\/li>\n<\/ul>\n\n<p>The plugin does not replace legal or tax advice. Contract templates and calculations are based on German law as of 2026 and must be checked before use.<\/p>\n\n<h4>Deutsch<\/h4>\n\n<p>Mietverwaltung f\u00fcr private Vermieter: Stammdaten, Zahlungen, Belege, Betriebskostenabrechnung nach BetrKV, Steuer (Anlage V), AfA, Darlehen, Mietvertrag mit allen Anlagen, Kaution, Mahnwesen, Mieterh\u00f6hung, Mieterportal und Datenschutz-L\u00f6schkonzept in einem Plugin. Alle Daten bleiben in der eigenen WordPress-Datenbank. Einrichtungsassistent und Hilfe sind im Backend enthalten.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the plugin and activate it \u2013 the <code>wp_mv_*<\/code> tables are created automatically.<\/li>\n<li>Follow the setup wizard (landlord \u2192 property \u2192 units \u2192 tenant \u2192 tenancy) or open <strong>Mietfux \u2192 Help<\/strong>.<\/li>\n<li>For the tenant portal, insert the shortcode <code>[mietfux_portal]<\/code> on a page and link the WordPress user on the tenant record.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"is%20any%20data%20sent%20to%20third%20parties%3F\"><h3>Is any data sent to third parties?<\/h3><\/dt>\n<dd><p>No. All data is stored in the WordPress database and media library. The purchase contract parser (pdf.js) is bundled with the plugin and processes the PDF locally in the browser.<\/p><\/dd>\n<dt id=\"can%20i%20manage%20a%20flat%20and%20a%20garage%20in%20one%20agreement%3F\"><h3>Can I manage a flat and a garage in one agreement?<\/h3><\/dt>\n<dd><p>Yes. Tick \"Additional units in the same agreement\" on the tenancy \u2013 you get one total rent, one booking and one statement.<\/p><\/dd>\n<dt id=\"is%20the%20generated%20tenancy%20agreement%20legally%20safe%3F\"><h3>Is the generated tenancy agreement legally safe?<\/h3><\/dt>\n<dd><p>The generator follows the German Civil Code (BGB) and Federal Court of Justice case law as of 2026, in its own wording. Have it checked by a lawyer in special situations (commercial, shared flats, furnished, rent cap areas).<\/p><\/dd>\n<dt id=\"which%20language%20is%20the%20interface%20in%3F\"><h3>Which language is the interface in?<\/h3><\/dt>\n<dd><p>English (source) and German (bundled, complete). WordPress selects the language from the site or user setting. Legal documents are generated in German only.<\/p><\/dd>\n<dt id=\"what%20happens%20on%20uninstall%3F\"><h3>What happens on uninstall?<\/h3><\/dt>\n<dd><p>Data is kept by default. You can enable \"Delete all tables and settings\" in the plugin settings before deleting the plugin.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.3<\/h4>\n\n<ul>\n<li>Source language switched to English (WordPress.org convention); the complete German translation is bundled as de_DE and loaded via load_plugin_textdomain(), so German sites look exactly as before<\/li>\n<li>Plugin description in English<\/li>\n<\/ul>\n\n<h4>1.0.2<\/h4>\n\n<ul>\n<li>Security review round 2: every request-driven action is now guarded by a nonce check before any input is read (admin forms, admin-post endpoints, tenant portal); the tenant portal statement link carries a nonce and can no longer trigger document storage<\/li>\n<li>Late escaping everywhere: generated HTML fragments go through wp_kses()\/wp_kses_post(), attributes through esc_attr(); all phpcs:ignore markers for output escaping removed (except the binary PDF stream)<\/li>\n<li>Status notices use short-lived transients instead of ?msg= URL parameters<\/li>\n<li>Remaining inline event handlers (confirm dialogs, select-all checkboxes, print buttons) moved into admin.js\/dokument.js<\/li>\n<\/ul>\n\n<h4>1.0.1<\/h4>\n\n<ul>\n<li>Renamed to Mietfux (slug <code>mietfux<\/code>, text domain <code>mietfux<\/code>); the shortcode <code>[mietverwaltung_portal]<\/code> keeps working as an alias<\/li>\n<li>All CSS\/JS now enqueued via the WordPress API (portal, print views, focus mode); translation files removed from the package in favour of translate.wordpress.org<\/li>\n<li>Fixed: admin-post actions for PDF\/CSV\/backup after the prefix change; CSV export and bank CSV import enclosure character<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>New admin layout: page header with icon, cards, dashboard with key figures, quick actions and notices on the overview, consistent tables and forms<\/li>\n<li>Fixed: entity pages were blank after the prefix change; placeholder order in several generated letters; fallback selection on deposit, rent increase and loan pages<\/li>\n<\/ul>\n\n<h4>0.9.9<\/h4>\n\n<ul>\n<li>Setup wizard (five steps from landlord to first tenancy)<\/li>\n<li>WordPress Coding Standards: full PHPCS compliance, prefix changed to <code>mietv_<\/code> (existing installations are migrated automatically)<\/li>\n<li>pdf.js bundled locally instead of loaded from a CDN<\/li>\n<li>Fixed placeholder order in the index-linked rent notice<\/li>\n<\/ul>\n\n<h4>0.9.8<\/h4>\n\n<ul>\n<li>Help page and contextual help in the admin area<\/li>\n<li>Complete English translation<\/li>\n<\/ul>\n\n<h4>0.9.7<\/h4>\n\n<ul>\n<li>Spouse\/partner as optional co-tenant \u2013 automatically included in agreement, letters, SEPA mandate and handover protocol<\/li>\n<\/ul>\n\n<h4>0.9.6<\/h4>\n\n<ul>\n<li>Structured admin menu with groups and icons<\/li>\n<\/ul>\n\n<h4>0.9.5<\/h4>\n\n<ul>\n<li>Tenancy agreement extended to 20 sections, rent cap exceptions, \u00a7 554 BGB, heating\/ventilation leaflet<\/li>\n<\/ul>\n\n<h4>0.9.0 \u2013 0.9.4<\/h4>\n\n<ul>\n<li>Additional units per tenancy, tick open items, loan account, depreciation fix, itemised acquisition costs<\/li>\n<\/ul>\n\n<p>Full changelog (German): https:\/\/github.com\/sporcherla\/mietverwaltung\/blob\/main\/CHANGELOG.md<\/p>","raw_excerpt":"Rental management for German landlords: tenancies, payments, service charge statements, tax (Anlage V), contracts, tenant portal.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/tg.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/392369","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/tg.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/tg.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/tg.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=392369"}],"author":[{"embeddable":true,"href":"https:\/\/tg.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/hirnmarkus"}],"wp:attachment":[{"href":"https:\/\/tg.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=392369"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/tg.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=392369"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/tg.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=392369"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/tg.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=392369"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/tg.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=392369"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/tg.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=392369"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}