{"id":1311,"date":"2026-09-30T15:34:14","date_gmt":"2026-09-30T08:34:14","guid":{"rendered":"http:\/\/www.solidres.com\/blog\/?p=1311"},"modified":"2026-09-30T15:34:14","modified_gmt":"2026-09-30T08:34:14","slug":"solidres-4-4-0-is-here-tourist-tax-done-the-way-authorities-charge-it","status":"publish","type":"post","link":"https:\/\/www.solidres.com\/blog\/2026\/09\/30\/solidres-4-4-0-is-here-tourist-tax-done-the-way-authorities-charge-it\/","title":{"rendered":"Solidres 4.4.0 is here: tourist tax, done the way authorities charge it"},"content":{"rendered":"\n<p><strong>Solidres 4.4.0<\/strong> is out, and its headline is tourist tax. Until now a property had one tourist tax setting: an adult rate, a child rate and a night cap. That fitted some towns and not many others. It could not hold two levies, every new rate had to be typed in on the day it started, and two of its charge types did not compute what they promised.<\/p>\n\n<p>In 4.4.0 tourist tax is a feature of its own, built into Solidres itself. The release also brings a set of booking and payment fixes, two security fixes, and pages that print properly from a device in dark mode.<\/p>\n\n<!--more-->\n\n<h2>Tourist tax, rebuilt<\/h2>\n\n<p>Tourist taxes now have their own screen under <em>System Info &rarr; Tourist taxes<\/em>, and each property&#8217;s edit form has a <em>Set up tourist taxes<\/em> button that opens its list. Everything below is set per property.<\/p>\n\n<h3>Several taxes, each under its own name<\/h3>\n\n<p>A property can charge as many taxes as its authorities stack. A New York hotel has an occupancy tax and a flat unit fee; a Barcelona hotel has one tax with VAT on it. Each tax is a separate line with the name you give it, such as <em>Taxe de s\u00e9jour<\/em> or <em>Imposta di soggiorno<\/em>, so guests see the wording your authority uses and your return is filed against it.<\/p>\n\n<h3>Rates you can enter before they start<\/h3>\n\n<p>A tax keeps a list of rates, each valid from a date. When next year&#8217;s rate is announced, add it the same day. Each night of a stay is charged at the rate in force that night, so a stay across New Year charges both rates. Where an authority locks the rate at booking, choose the rate on the check-in date instead.<\/p>\n\n<ul>\n\t<li><strong>Booked from<\/strong> keeps bookings made before a date on the old rate, the way some cities protect existing reservations when a rate goes up.<\/li>\n\t<li><strong>Seasons<\/strong> are rates with an end date.<\/li>\n\t<li><strong>Add next year&#8217;s rate<\/strong> copies the latest rate forward, so you only type the new amount.<\/li>\n\t<li>The list and the edit screen warn you when no rate covers the nights ahead, before a guest is charged nothing.<\/li>\n<\/ul>\n\n<h3>The rules authorities actually use<\/h3>\n\n<ul>\n\t<li>Charge per person per night, per room per night, per person per stay or per booking.<\/li>\n\t<li>Charge a fixed amount, or a percentage of the room price, taken before or including VAT and always after discounts.<\/li>\n\t<li>Exempt children under an age, and charge a reduced share to an older band.<\/li>\n\t<li>Tax only the first nights of a stay, such as the first seven.<\/li>\n\t<li>Cap a percentage tax per person per night, as French communes do.<\/li>\n\t<li>Charge VAT on the tax itself, shown as its own &#8220;VAT on&hellip;&#8221; line, as Catalonia and Germany require.<\/li>\n<\/ul>\n\n<h3>Paid online or at the desk<\/h3>\n\n<p>In much of southern Europe the tax is handed over at the property. Mark a tax <em>Paid at the property<\/em> and it stays in the booking total, reads &#8220;(payable at the property)&#8221; on the booking, and is left out of everything the payment gateway charges: full payments, deposits, an invoice&#8217;s amount due and balance reminders. A booking paid in full online counts as settled.<\/p>\n\n<h3>What guests see<\/h3>\n\n<p>Each tax has its own row, under its own name, everywhere a booking&#8217;s money is shown: the room price preview, the confirmation step before payment, the booking e-mails, the invoice PDFs and the registration card. Guests see the full price before they pay.<\/p>\n\n<h3>Exemptions handled at the desk<\/h3>\n\n<p>Diplomats, business travellers in some cities, guests with a disability exemption: every exemption worth having needs a document someone checks. So guests cannot claim one, but your staff can. When amending a booking, staff can set the amount of each tax, with a reason that stays on the booking. Entering 0 exempts it. The amount survives later amendments, and clearing the override box goes back to the calculated tax.<\/p>\n\n<h3>A report for your return<\/h3>\n\n<p><em>System Info &rarr; Tourist tax report<\/em> gives the figures a municipal return asks for, per tax, by month, quarter or year: bookings, taxed nights, guests at the full rate, at the reduced rate and exempt, untaxed nights, the taxable base, the tax, its VAT, and how much was paid online and at the desk. Each night is counted in the period it falls in, so a stay across a month end is split between the two months. Figures stay in the currency each booking was made in, and the report exports to CSV.<\/p>\n\n<h3>On a Hub and through the API<\/h3>\n\n<p>On a Hub site, partners set up tourist taxes for their own properties and read the same report from the partner dashboard, with Hub 2.3.0. For integrations, the reservation resource of the Solidres API now carries each tax with its per-night charges and the part payable at the property, read-only.<\/p>\n\n<p>The documentation walks through every field, with worked setups for Paris, New York and Barcelona: <a href=\"https:\/\/www.solidres.com\/documentation\/joomla-documentation\/13-configuration\/103-how-to-configure-tourist-tax\">how to configure tourist tax in Solidres<\/a>.<\/p>\n\n<h2>Upgrading from 4.3 and earlier<\/h2>\n\n<p>You do not have to set anything up again. During the update, each property that had tourist tax switched on gets a tourist tax of its own, with one open-ended rate carrying its amount, age limit and night cap. The old setting is then switched off. After updating, open <em>System Info &rarr; Tourist taxes<\/em> and check each tax. Some amounts change:<\/p>\n\n<ul>\n\t<li><strong>&#8220;Per person per room&#8221; charges more for longer stays.<\/strong> That charge type ignored the number of nights, and its night cap did nothing, so those properties were collecting too little on every stay of more than one night. It is now charged for every taxed night and the cap works. That is what the setting always claimed to do, but quotes will change.<\/li>\n\t<li><strong>&#8220;Per person per stay&#8221;<\/strong> is migrated as per person per night with nobody exempt, which is what it actually charged. If children should be exempt at your property, set <em>Exempt under age<\/em>.<\/li>\n\t<li><strong>Unusual setups<\/strong>, such as an adult rate of 0 with a child rate, are migrated unpublished with a notice naming the property. They charge nothing until you review and publish them.<\/li>\n\t<li><strong>Past bookings<\/strong> keep the tax they were charged. They have no night-by-night detail, so the report counts them in a separate <em>Without breakdown<\/em> column.<\/li>\n\t<li><strong>Complex Tourist Tax plugin:<\/strong> if you use it, its yearly rates are imported as dated rates, and the System page warns while it is still enabled. Once you have checked the imported rates, disable and uninstall it.<\/li>\n<\/ul>\n\n<p>The <a href=\"https:\/\/www.solidres.com\/documentation\/joomla-documentation\/13-configuration\/103-how-to-configure-tourist-tax\">documentation<\/a> has a section on the migration and a troubleshooting table.<\/p>\n\n<h2>Booking and payment fixes<\/h2>\n\n<ul>\n\t<li><strong>Cancelled at the gateway:<\/strong> a guest who cancels on the payment page now has the reservation cancelled, as the message they see says. It used to stay pending. A booking whose payment was already confirmed is left alone.<\/li>\n\t<li><strong>Approval:<\/strong> with <em>Booking require approval<\/em> on, bookings that staff add in the back end or the partner dashboard send the &#8220;pending approval&#8221; e-mail, not &#8220;Your reservation is completed&#8221;. Amending an approved booking no longer sets it back to not approved.<\/li>\n\t<li><strong>Guest changes:<\/strong> the customer dashboard and the tracking page now obey the property&#8217;s switches for amending and cancelling. Guests could amend or cancel even with both turned off.<\/li>\n\t<li><strong>Removing a deposit:<\/strong> typing 0 or clearing the deposit on the amend screen now removes it. The old deposit used to stay on the booking and was what a later online payment charged.<\/li>\n\t<li><strong>Room form on phones:<\/strong> each extra is one row, with the name as its label, and an extra that can be booked only once has no quantity list. The price breakdown shows each night as a small tile, so a long stay no longer fills the screen, and it has moved out of the room heading so screen readers stop reading every price as part of it.<\/li>\n\t<li><strong>Admin booking form:<\/strong> <em>Load available rooms<\/em> warns when no room is free for the chosen dates, and the general info block lines its labelled fields up on an even grid.<\/li>\n\t<li><strong>File downloads:<\/strong> guests whose e-mail address contains a plus sign can download files uploaded through a custom field from their booking e-mail.<\/li>\n<\/ul>\n\n<h2>Security<\/h2>\n\n<p>4.4.0 fixes two issues, and we recommend updating:<\/p>\n\n<ul>\n\t<li><strong>Hub partner lists:<\/strong> a crafted link could turn off the partner scoping of the extras, coupons, room types, discounts, invoices, housekeeping and limit booking lists in the partner dashboard, and show one partner another partner&#8217;s records. Request parameters can no longer change that scoping.<\/li>\n\t<li><strong>Approving bookings:<\/strong> the Approve buttons in the back end and the partner dashboard were plain links, so a crafted link could make a signed-in administrator or partner approve a booking. They now carry a form token. A booking is also approved only once, so a double click no longer sends every e-mail twice.<\/li>\n<\/ul>\n\n<h2>Also in this release<\/h2>\n\n<ul>\n\t<li><strong>Printing:<\/strong> pages always print in light colours. On a device set to dark mode, pages such as booking tracking used to print pale text on white paper.<\/li>\n\t<li><strong>Availability calendar:<\/strong> stays on the months you navigated to, and follows the administrator template&#8217;s dark mode.<\/li>\n\t<li><strong>Coupons:<\/strong> the start date opens one date picker instead of two.<\/li>\n\t<li><strong>Property layouts:<\/strong> styles 2 and 3 now use the same heading order as the default layout, H2 then H3, and keep their previous look.<\/li>\n\t<li><strong>Template override check:<\/strong> the System page now compares each override with the file it replaces and flags only the ones that are really out of date. Before, even exact copies of unchanged files were flagged after every release.<\/li>\n\t<li><strong>Inventory:<\/strong> the Inventory menu item shows a notice when the Inventory plugin is not installed, instead of an error.<\/li>\n\t<li><strong>Command line:<\/strong> scheduled tasks run with <em>scheduler:run<\/em> no longer fail in Solidres code that expected a web request.<\/li>\n<\/ul>\n\n<h2>Before you update<\/h2>\n\n<ul>\n\t<li><strong>Take a backup.<\/strong> 4.4.0 adds three database tables for tourist tax and migrates your existing settings into them.<\/li>\n\t<li><strong>Review your tourist taxes<\/strong> after the update, as described above.<\/li>\n\t<li><strong>Template overrides:<\/strong> the room form, extras, price breakdown, confirmation, reservation details and booking e-mail layouts have changed. The System page flags any overrides that need updating. An e-mail override made before 4.4.0 keeps showing a single tourist tax line until you update it.<\/li>\n\t<li><strong>Custom CSS:<\/strong> on property layout styles 2 and 3, headings moved from H4\/H5 to H2\/H3. Check any styles that target the old levels.<\/li>\n\t<li><strong>Add-ons:<\/strong> new versions of several add-ons ship alongside this release, and Hub 2.3.0 and Invoice 2.1.0 need Solidres 4.4.0. Update Solidres first.<\/li>\n<\/ul>\n\n<h2>Update today<\/h2>\n\n<p>Solidres 4.4.0 needs Joomla 6 and PHP 8.3 or later. Update from the Joomla updater as usual, or download it from your solidres.com account. The full changelog ships with the release.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Solidres 4.4.0 is out, and its headline is tourist tax. Until now a property had one tourist tax setting: an adult rate, a child rate and a night cap. That fitted some towns and not many others. It could not hold two levies, every new rate had to be typed in on the day it [&#8230;]<\/p>\n","protected":false},"author":3,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[1],"tags":[34,17,15],"_links":{"self":[{"href":"https:\/\/www.solidres.com\/blog\/wp-json\/wp\/v2\/posts\/1311"}],"collection":[{"href":"https:\/\/www.solidres.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.solidres.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.solidres.com\/blog\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/www.solidres.com\/blog\/wp-json\/wp\/v2\/comments?post=1311"}],"version-history":[{"count":1,"href":"https:\/\/www.solidres.com\/blog\/wp-json\/wp\/v2\/posts\/1311\/revisions"}],"predecessor-version":[{"id":1312,"href":"https:\/\/www.solidres.com\/blog\/wp-json\/wp\/v2\/posts\/1311\/revisions\/1312"}],"wp:attachment":[{"href":"https:\/\/www.solidres.com\/blog\/wp-json\/wp\/v2\/media?parent=1311"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.solidres.com\/blog\/wp-json\/wp\/v2\/categories?post=1311"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.solidres.com\/blog\/wp-json\/wp\/v2\/tags?post=1311"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}