Subscriptions module · User guide
Create subscriptions for Bexio customers and bill them recurrently
The Subscriptions module manages recurring contracts for your Bexio customers and bills them automatically: maintenance contracts, licences, support retainers — anything that produces the same invoice in a fixed rhythm.
It builds on the Bexio module: articles and contacts come from there. And it deliberately does not talk to Bexio itself — more on that shortly.
Creating a subscription
You find the list under Subscriptions in the navigation; the module's settings sit under Manage → Bexio → Subscriptions.
A contract needs a title, a Bexio customer, a start date, a rhythm — monthly, quarterly or yearly — and at least one line.
A line is an article from the Bexio module with a quantity and a price. One thing matters here: the line is a snapshot, not a live reference. If the article changes in Bexio, the contract does not change with it. A contract whose prices move behind your back would be no contract.
You also set who is responsible. That is the responsibility, not the author — whoever created the contract stays beside it in the history.
How the periods are calculated
Two rules, from which everything else follows:
- Every period start is calculated from the contract start, never from the previous period. Otherwise every month-end rounding error accumulates, and after two years no date is right any more.
- The period end is the start of the following period minus one day and is never determined independently. That makes the periods gapless and without overlap by construction.
At the end of a month it looks like this. Contract start 31 January, monthly:
| Period | Range | Why |
|---|---|---|
| First | 31 Jan – 27 Feb | The following period starts on 28 Feb, because there is no 31 February |
| Second | 28 Feb – 30 Mar | The following period starts on 31 Mar, the anchor day is back |
| Third | 31 Mar – 29 Apr |
So the anchor day is not lost just because one month is shorter. That is exactly what would have happened when counting on from period to period.
Proportional billing
Two cases need a partial period, and both are calculated the same way:
The denominator is always the nominal length of the period, not the shortened one. A yearly subscription ending after 90 days costs 90 of 365 days proportionally — not 90 of 90. Otherwise cancelling would be free.
Calculation uses real calendar days and not 30/360. That way partial ranges add up exactly to a full period, in a leap year too.
For individual lines the proportional calculation can be switched off and set to «always full» — for services your own supplier also charges you in full.
The invoice text
Every line has a multi-line invoice text, and that text is a template: {placeholders} are replaced with the values of the actual period when billing. So the invoice reads «Maintenance 01.01.2027 – 31.03.2027» and not the same meaningless sentence every quarter.
A preview shows you what it becomes before you bill. And the order of the lines can be set by dragging — it is the order on the invoice.
The overview list
The search covers the title, the Bexio customer including their customer number and, if set, the FreeScout customer. Plus a filter by state.
Which columns you want to see you set in the three-dot menu; the choice is remembered for you. On offer are customer, responsibility, start, rhythm, next period, billing date, notice, amount, lines and state.
The amount is the net amount of the next period — the figure you want when you look at the list.
Billing
Here sits the module's most important decision: it sends nothing to Bexio itself. A billing run creates an invoice in the Activities module with the state «open». It is pushed to Bexio there, with the existing Send to Bexio button.
That way there is exactly one path to Bexio — the Bexio module's — and exactly one place where a human signs off. A module that puts real invoices to a customer unattended is a bad idea, however well it calculates.
Three things trigger a run:
- The daily run at 06:00 bills what is due.
- The Bill now button on the subscription bills the next open period, even before its date.
- A line change in a period already billed puts the correction out immediately as its own invoice.
A contract several periods behind catches up one period per run. That is deliberate: otherwise a flood of invoices would appear at once that nobody can check any more.
When a run fails
A failed run reports itself through a bell of its own in the navigation, visible only to administrators and only when something is pending.
Only what fails unattended raises a notification:
| Trigger | Bell |
|---|---|
| Daily run: period failed | yes |
| Daily run: corrections failed | yes |
| Line change: correction not issued | yes — it stays open and would otherwise be forgotten |
| The «Bill now» button | no — the error is on screen directly |
As long as an unread notice about the same period is pending, no second one is created. Without that de-duplication, a permanently failing contract would extend the bell every day, and it would soon be ignored.
Once billing succeeded, the old warnings for that contract are cleared away.
Worth knowing
Cancelled does not mean ended
A cancelled contract runs to the end of its term and is billed until then — the last period proportionally if need be. «Cancelled» is an announcement, not an off switch.
The start date is locked after the first billing
It cannot be moved afterwards. All period boundaries derive from it; a later change would call every invoice already issued into question.
The tax rate comes from the article
It is resolved from the Bexio module's article when billing and not stored on the contract. That way the rate that is correct at the time of billing always applies.
The Bexio and Activities modules are required
Articles and contacts come from the Bexio module, and the invoices created live in the Activities module. Without those two the Subscriptions module cannot work.
Not getting anywhere with this? Support