Belenios supports a dedicated voter interface for STV, where voters give rank to candidates by order of preference. Candidates cannot be ranked equal. You can find here more information on the contexts in which this method is well suited and how votes are counted.
Preparation of the election
On the new interface, when filling the page "Questions", you need to select "ranking propositions" as type of answers and "STV" as counting method.
By default, the voting interface will invite voters to rank the candidates, without equalities. You need to enter the number of seats in your election as it is a parameter needed to determine the winners. You may preview the booth ("Preview booth" on the "Questions" page). The rest should be self explanatory.
How votes are encoded?
A number is given to each candidate: 1 is the preferred option while the largest value is the least preferred option. Equalities are not possible. When a candidate is not selected, it is assigned to 0, that will be treated non ranked. If blank is allowed, a blank vote will be encoded as all candidates assigned to 0.
Counting the votes
The rationale and the general idea of the algorithm can found here. We used the Droop quota with fractions rounded in double. The exact code can be found in the file stv.ml. You may apply another counting method on the raw ballots, that are provided after the tally.