Breeders Trophy och unghästchampionat i fälttävlan

Swedish eventing has a young horse championship judged in three phases, ridden back to back on the cross country course, with no times at all. Equipe now handles it. The rest of this post is in Swedish, since the championship is.

SWB Breeders Trophy och SvRF:s unghästchampionat för 4- och 5-åriga fälttävlanshästar har körts på excelark. Nu finns det i Equipe.

Tre faser rids i följd på en terrängbana och bedöms av två domare med ett betyg per fas: gångarter, hoppning och terräng, där terrängen räknas dubbelt. Högst 40 poäng, inga tider.

Klassen lägger du upp som en dressyrklass och väljer protokollet Breeders Trophy fälttävlan 2026 under Bedömning. Protokollet har en rad för varje fas och egna rader för rivning och vägran. Delsumman per fas och totalen räknar Equipe ut.

Terrängraden är märkt med ×2 och delsummorna räknas ut

Att klassen ligger som dressyr spelar ingen roll för hur det ser ut utåt. Protokollet säger att grenen är fälttävlan, så online står den som fälttävlan och varje fas får en egen grupp med kolumner, med betyg och avdrag var för sig.

Varje fas får en egen grupp med kolumner

Blir två ekipage lika på totalen skiljer Equipe dem åt i den ordning reglerna anger: högst poäng i terrängmomentet först, därefter hoppningen, därefter gångarterna. Poängen räknas med avdragen, så den som fått avdrag i terrängen hamnar efter.

Guiden går igenom hela flödet, från att lägga upp klassen till att mata in betygen: Breeders Trophy och unghästchampionat i fälttävlan

Breeders Trophy i fälttävlan avgörs 12–13 september på Össjö terrängbana utanför Ängelholm, i samband med de nordisk-baltiska mästerskapen. Ser något konstigt ut, hör av dig så tittar vi på det.

Inverkansbedömd terrängritt och Terränghästprov

Swedish eventing has two sheets where the cross country ride is judged on marks, not on time. Equipe handles them. The rest of this post is in Swedish, since the sheets are.

Svensk fälttävlan fick två nya protokoll i år, Inverkansbedömd terrängritt och Terränghästprov. Ekipaget rider terrängbanan och tre betyg avgör resultatet. Ingen tid, inga procent.

Klassen läggs upp som en dressyrklass, och protokollet bär grenen så att ritten räknas som fälttävlan på online.equipe.com.

Protokollet väljs under Bedömning på klassen

Slutbetyget är medelvärdet av de tre betygen minus avdraget, som du skriver på raden Avdrag i protokollet.

Kommer tävlingen från TDB behöver du inte göra något alls. Lägg upp klassen med sin nivå som vanligt, TH80 eller IT90H, och välj protokollet under Dressyrprogram. Resten sköter importen.

Samma klass på online.equipe.com

Equipe skriver också ut förbundets egna protokoll med startnummer, ryttare och häst redan ifyllt, så du slipper hämta dem från Ridsportförbundet och skriva dit namnen för hand.

Guiden går igenom hela flödet: Inverkansbedömd terrängritt och Terränghästprov

July 2026 Update: Style Points, Time Allowed Calculator and a Fresher Online

The bigger ones: eventing style points got a proper column instead of a custom field workaround, the time allowed field got a calculator, and online.equipe.com went through a design cleanup.

🏆 New features

Style points for eventing (App and Online)

Style points used to be a custom field called xc_modifier, and the value was subtracted straight from the cross country score. That worked until a rider was eliminated. The 999 that marks an elimination got changed, and from there the results were wrong in several places. Online also showed the value far from the score it belonged to, so a cross country result could read -9.5 (0 + 6.8), which always needed an explanation.

Style is now a real column on the start.

  • The cross country score stays clean. Obstacle penalties plus time penalties, or 999 when eliminated.
  • The deduction happens in the total, and only once the cross country has been ridden. Filling in style points before the horse finishes, or after an elimination, no longer breaks anything.
  • Add the column from the field selector on the start list. It sits in the scores group and is marked as cross country. Cross country result registration shows it between Cross and Total.
  • Printouts show a Style column right after Cross, only for classes that have values.
  • Online shows it inside the cross country group, right after faults and time, and on the single result page on the phone.
  • Fetch copies it between classes, and clears it if it was removed in the source class.

If you used the old xc_modifier custom field, it no longer affects any score and you can remove it from your custom field settings. One thing to know: at equal totals the tie break now uses the clean cross country score instead of the style adjusted one, so places within a tie can differ from before.

Time allowed calculator (App)

The time allowed field was a plain input. Now there is a calculator next to it. Enter the course length in metres and the speed in metres per minute, and you get the time allowed, rounded up, per FEI Art. 252. Eventing cross country optimum time uses the same calculator in mm:ss, both in the dialog and on the eventing tab in competition settings.

The course length and the speed are saved with the competition, so the cross country fence sheet and the show jumping scoresheet print them instead of leaving blank lines.

Maintenance breaks in randomize (App)

Bigger shows often need one or more maintenance breaks inside a class. The randomize dialog now takes a number of breaks and a duration, and places them evenly among the numbered starts. There is a per-competition setting to re-centre them every time you renumber. Breaks you insert by hand are spread evenly too, instead of ending up wherever the sort left them. The break controls are hidden for eventing.

Payment deadline for entries (Entry)

Riders can be given a time limit to pay for their entries. If they do not pay in time, the entries are unsubmitted and the places are freed up. We wrote a separate post with the details: Set a payment deadline for entries.

Startlist AI (App)

We also published the first version of Startlist AI in July, built together with a federation that wanted riders' free text wishes turned into real scheduling constraints. The whole story is here: A first version of Startlist AI.

✨ Improvements

Score summaries

  • Working equitation percentages. Percent can now read a specific working equitation moment instead of the overall result. Each filter row gets a source, and working equitation classes offer WE dressage % and WE EOH %.
  • Custom field filters. Score summaries got the same start, rider and horse custom field filters as fetch data, so a summary can be built from only the starts you ticked. Checking several boolean fields inside one group now means any of them, while different groups still narrow each other.
  • Type to search. The competition field when adding to a summary is an autocomplete now, and clicking it opens the full list.

Schedule and start lists

  • Start time conflicts respect the maximum gap. The resolver looked only at the minimum number of riders between two horses. It now respects the maximum too, so it will not push a rider's two starts too far apart while fixing a clash. Conflicts where the two competitions are simply too far apart are shown in a softer colour, like the ones that are too short to fix.
  • The dressage judges field shows the full list of judges when you click into it, instead of waiting for you to type.
  • Searching for a competition number is no longer case sensitive. Searching for 61_p finds class 61_P.

Invoicing

  • Balance transfer emails in the right language. When you transfer a balance to another show and send a notification, the subject and the message were prefilled in your own language, which was confusing for a receiver who speaks another one. They now use the show's invoice language when it is set. The economy notes and the send invoice checkbox are proper collapsible sections with a clear open and closed state.
  • Peppol. Payments made without a matching fee now come out as invoice lines in the Peppol UBL, so the invoice adds up.

Reports

  • Emoji in competition names rendered as empty boxes in every PDF except table reports. All reports use the same emoji fallback font now.

Online

  • Live updates survive a reconnect. The cable client replays broadcasts that were missed during a reconnect instead of dropping them.
  • A design cleanup. Colours across the site come from one set of tokens instead of hardcoded values, the icon font is up to date, and Lato is served from our own servers instead of Google. The account pages (Me, Profile, Self service, Documents) use the same flat panel style as the show pages. Confirmations no longer use the browser's grey popup, they use our own dialog everywhere. The notifications page got a proper empty state, the document filters became toolbar tabs, and going back to search keeps your scroll position.
  • Lists no longer show a remaining count. A list has no result registration, so "12 remaining" meant nothing. It shows the number of participants instead. Pinned classes no longer show a date either, since they sit outside the day schedule.
  • "Published" is back on classes with a start list. In June we hid the published time on schedule blocks carrying an external link, to avoid a misleading date on blocks that point at content we do not own. That was too broad. Organizers often name a class after a sponsor and attach the sponsor's website, which says nothing about how current the class is. A block now has to have no class sections before we hide the time.
  • Signing out clears cached pages. Turbo snapshots and cached notification data survived logout, so on a shared device personal data could reappear when navigating back. Not any more.
  • Signing in does not silently create an account. An unknown email used to get a new account created quietly, which left riders with two accounts and push notifications going to the one they were not looking at. We stop and ask before creating anything now. This has been live for a while, we just never wrote about it.

Entry

  • Start fees respect quantity. A fee with target Start counted rows instead of the quantity, so a rider on the reserve list was charged for a start they did not have. It counts quantity now, which also means an entry with quantity 2 is charged for two starts, the way the fee was always meant to work.
  • Meeting fees are sorted by date and position, so the days come in the right order.

Help

  • help.equipe.com got a proper documentation experience. Articles have a sidebar with filtering, breadcrumbs, reading time, a table of contents that follows along as you scroll, image zoom, previous and next navigation and related articles. The article index shows category cards, and the search field in the navbar suggests as you type. You can also react to an article or a changelog post, which tells us what actually helps.

🐛 Bug fixes

  • Holding a save shortcut key no longer fires repeated saves (App).
  • Inserting a start between two category blocks no longer creates a duplicate position (App).
  • The eventing total on the single result page is rounded properly, and cross country faults are split into fence and time faults like the start list does it (Online).
  • A cross country scoresheet with only refusals no longer draws the fault codes on top of the fence numbers (Online).
  • Saving a class for a meeting that no longer exists is blocked, and a start whose meeting is gone returns 404 instead of an error (Online).

📋 FEI and regulatory

  • Endurance disqualification reasons. The five missing FEI reasons are now available: Underweight, Late Presentation, Hyposensitivity, Horse Abuse and Horse Not Presented. The FEI export also carries the position complement.
  • Time allowed is calculated per FEI Art. 252, with the speeds in Art. 258 and Annex V.
  • Style points are exported. They go to federations and to the FEI as a generic style element, so the deduction is visible in the export instead of hidden inside the cross country score.

💬 What we're hearing

  • Sponsor logos. Our most asked topic in July by a wide margin, from Sweden, Denmark and Finland. Nearly every question is the same one: the logo is uploaded, but it does not show on the start list or in online. The article covers the setup: Sponsor logos. When this many people get stuck in the same place, the setup is probably the problem, not the people. We are looking at it.
  • Score summaries and meeting prizes. Several questions about building a summary across two shows, and about which result the percentage is taken from. Two of the changes above came out of these.
  • Prize money. How to distribute it, and what happens to the amounts afterwards, especially the ones that end up as debts to pay back.
  • Vaccination lists. When a list can be created, how to import it, and why late entries do not turn up on it.
  • Locking yourself out. A couple of organizers changed their own access to judge result registration only and could not get back in. If that happens, write to us and we will sort it out.

We read every question and report. Keep them coming.

Set a payment deadline for entries

You can now give riders a time limit to pay for their entries. If they do not pay in time, their entries are moved back to unsubmitted. Many of you have asked for this.

The problem is familiar to most organizers who take payment at entry. One venue described it well: a rider submits five stables at a show where stables are capped, never pays, and deletes them right before entries close. Those spots were blocked the whole time, and the organizer spent days chasing a payment that never came. Others told us they were chasing payments from the saddle in the middle of their own rides. This feature does the chasing for you.

On the show's General settings, right below Payments enabled, set "Pay within" to anything from 30 minutes to 3 days. The countdown starts when the payer submits their entries. Payments must be enabled and a Stripe account connected for the deadline to be enforced.

up-pay-within-setting.png 110 KB

When a payer submits entries with an outstanding balance, the deadline is shown in a banner on their entry page and in the confirmation email.

up-payment-deadline-banner.png 345 KB

If the deadline passes and there is still money owing, the unpaid entries are moved back to unsubmitted and the payer gets an email with a link straight to their entries. Nothing is deleted. As long as the show is open for entry, they can pay and submit again.

up-unsubmitted-email.png 72.8 KB

A few details we took care of:

  • A payment in progress is never interrupted. If the payer is in the middle of checkout when the deadline passes, we wait for it to finish.
  • Entries covered by an earlier payment are left alone. If someone pays for five entries and later adds two more without paying, only those two are unsubmitted.
  • Accepted entries are never touched.
  • Payers on the no payment required list are not affected. Putting someone on that list also clears their deadline.
  • Waiting list entries are free, so on their own they never start the countdown.
  • The deadline is never later than the show's entry closing time.

Leave "Pay within" on Disabled and everything works like before.

A first version of Startlist AI, built with Paardensport Vlaanderen

This one started with a conversation. Paardensport Vlaanderen vzw, the equestrian federation in Belgium, came to us with a problem they know well. On a big national show, a lot of riders send a PM with their entry: start near my trainer, late in the class, keep my two horses apart, a specific start number. Reading all of that by hand and turning it into a fair start order takes hours, and no one can hold it all in their head at once.

We looked at the numbers together. On one national weekend, almost one in three riders had written a free-text wish, hundreds of them in Dutch, French and English mixed. So we built Startlist AI with them, and this is the first version.

It is an extension inside Equipe. You open it from a meeting, and it does a few things:

  • Reads the rider PM notes. The AI turns each free-text note into a clear, structured wish, whatever language it is written in.
  • Proposes a start order. It keeps the start list you already drew and moves starts within those slots to honor as many wishes as it can. It does not redraw your day.
  • Shows its work. For every wish you see the original note next to what the AI understood, and whether the wish was honored or not.
  • Writes the order back to Equipe when you are happy with it, and never touches a class that already has results.
The extension

The AI only does one job, reading the notes into structured data. Everything after that is plain, predictable logic, so the proposed order is something you can check and trust.

You bring your own OpenAI API key. Startlist AI needs an OpenAI API key to read the notes, and you provide your own. It runs on your key, so the usage is billed to you and you decide what is sent and whether the notes may be processed.

It is not generally available yet. This is an early, first version. It works, but we still have a lot to refine, and we are testing it on real shows with a small number of organizers before we open it up more widely. If you run busy shows with a lot of rider wishes and want to try it with us, get in touch.

Thanks to the team in Belgium for bringing us a real problem and working through it with us. That is how the best things in Equipe get built.

June 2026 Update: Scoreboard Access, Smarter Score Summaries and Cleaner Schedules

June was a busy show month across the Nordics and the Netherlands. We spent it tightening up who can see what, making score summaries match riders correctly across shows, and clearing out a batch of timezone and schedule issues that tend to surface during a live show.

🏆 New features

Restrict a user to specific scoreboards (App)

You can now limit a login to only the scoreboards it should reach. This is mostly for organizers working with streaming providers and graphics operators who should only touch one arena. We wrote a separate post with the details: Restrict a user to specific scoreboards.

Prize in kind for team prize money (App)

Team prize money now supports prize in kind, the same as individual prizes already did. Add a "Prize text" to a team for a medal or another prize, including an emoji like 🥇, and it carries through to the team results in online.equipe.com.

✨ Improvements

Start time conflicts now swap the start number too (App)

When the conflict wizard moves a rider to fix a clash between two of their horses, it now swaps the start number along with the position, matching what happens when you move a start by hand. Classes that are too short for the wizard to fix are shown in a softer colour with a note, so you can see at a glance which ones need a manual look. More in the dedicated post: Resolve start time conflicts automatically.

Score summaries match by FEI ID, licence or name (Online)

Score summaries used to match competitors on one combined rule that merged anyone sharing either a FEI ID or a licence. Riders with different FEI IDs but the same placeholder licence (PENDING or 0000) ended up calculated together. You can now choose FEI ID, licence or name on their own. New summaries default to name, the one identifier that is always present. Existing summaries keep working exactly as before.

Daily work

  • Set "do not compete" from the rider declaration (App). You can now right-click, or use the button, in the rider declaration overview to set a start to DNC, without leaving the page.
  • Labels for payers who never ride (App). People who pay for entries but never ride, for example companies, now get their labels when you address labels to the payer. Payer-only people are no longer dropped when you pick a specific list or competition. Labels are ordered by the lowest number actually printed, and horses inside a label follow the horse number when you sort by number.
  • Cleaner competition selectors (App). Divider lists are now hidden in the competitions selector and as destinations in the start transfer dialog, so they no longer clutter the choices.
  • Competition number length checked on save (App). Saving a competition with a number longer than 20 characters is now blocked in the app, with the error shown under the field. This matches the limit that already applied when publishing online or exporting to a federation, so you find out early instead of at publish time.

FEI

  • Entry system credentials only where they apply. The entry system v3 credentials form now shows only for show jumping, the one discipline that uses it. Events with no FEI entry system (para dressage, para driving, vaulting, reining) are marked so you cannot pick them by mistake.

Online

  • A less misleading "Published" time. For schedule blocks that link out to an external page, like an FEI schedule, we hide the published time, since the page behind the link can change after you publish. Reordering classes no longer marks every shifted class as freshly updated either. Only real changes to a class update its published time now.
  • Live stream stays reachable after a class finishes. When a class section is announced finished, the live stream embed used to disappear completely. The toggle now stays, just defaulted off, so you can still open the stream.

🐛 Bug fixes

  • Result times in the right timezone (App). Result times now show in the competition timezone in the startlist grid, and we fixed a shift that could move them by the timezone offset when loading results across competitions.
  • Meeting dates kept in sync (Online). A meeting's start and end dates now recompute when you add, edit or delete a class, not only on import. Before this they could point at dates that no longer matched any class.
  • Pending shows page no longer reloads other pages (Online). A refresh on the pending-shows page was leaking onto other pages and reloading them every five seconds. It now refreshes only its own page.
  • Schedule alignment with dividers (Online). Divider rows in a pinned arena group no longer push the competition-number column out of line.
  • Drag and drop in the judgement dialog (App). Sorting by drag and drop in the judgement dialog works again.
  • Country codes with letters (App). The country selector now accepts alphanumeric codes such as NI1 and NI2.
  • Entry showed a show as closed when it was open (Entry). Fixed the status shown above the user profile, which could say a show was still closed after it had opened.
  • Payment methods for organizers (Entry). Restricting payment methods could fail for organizers using Stripe, because Stripe does not allow turning off Link through an exclusion list. We switched to an allow-list. Card payments stay available, and leaving the list empty keeps the normal set of payment methods.

📋 FEI and regulatory

  • Para Dressage team export fixed. The FEI export for Para Dressage (CPEDI) team results failed with a "FractionDigits" error when a score carried too many decimals. We now format the team score and points correctly so the export goes through.

💬 What we're hearing

A few patterns from support this month:

  • Combining classes and results. Still our most common theme, mostly from Denmark: collection classes (samleklasse) and merging results across classes or shows. The score summary change above came partly from this.
  • Paperless protocols. Questions about paperless marking sheets and protocols, especially for working equitation and eventing.
  • Login and access. A few reports of the app not loading, including on older Apple tablets. An older iPad is often the cause, and we are looking into it.
  • Team competitions. Still a regular topic from last month: building teams and how totals are counted. Better guidance here is still on our list.

We read every question and report. Keep them coming.

Restrict a user to specific scoreboards

You can now limit a login to specific scoreboards. Many of you who work with streaming providers have asked for this.

Until now, a user with the Graphics role could see and control every scoreboard at your show. That was a problem when you gave a streaming provider, for example Clip My Horse, a login to run the TV graphics. Their operator could open any display at the venue, not just their own.

Now you can enter one or more scoreboard IDs on the user's access, under Users on the organizer. The ID is the last part of the scoreboard URL. The user then only sees those scoreboards, and the director runs without edit options. They can switch scenes, select starts and change competition, but they cannot edit scenes, change settings, upload assets or delete anything.

User access control

Scoreboard IDs are kept when you import scoreboards from another show, or when a show is created from a template. So if you set this up once for a streaming provider, their login keeps working at your next show.

Leave the field empty and the login works like before, with access to all scoreboards.

Resolve start time conflicts automatically

Riders often have several horses, and on a busy day their competitions run at the same time in different arenas. You want enough time between each of their starts so they can get from one ring to the next and ride every horse. Working that out by hand across a full day, with arenas running in parallel, takes ages. The schedule now does it for you.

On the check start times view, set how much time you want between starts, then press the resolve button. It runs in the background, looks across the whole day and every arena, finds the riders and horses with clashing times, and swaps positions to fix them. It respects section boundaries, age groups in young horse competitions, riders with several horses, and pauses, so it never moves something it shouldn't. A progress bar shows what it is doing while it works through the harder cases.

Tested live at a CSI4*

We ran it live at a CSI4* this month. First randomize, which spaces a rider's horses by a number of starts (30 to 60 here). Then run the resolver, which works in minutes, with a 60 minute minimum on top. The verdict from the show was that the new wizard works super. The nice part is how fast it is to check. Run it, look at what is left, and you know in seconds whether the day holds together.

image.png 337 KB

What we improved this week

Two things came straight out of using it at the show.

  • Start numbers now follow the new order. When the resolver moves a horse to a new spot, its start number moves with it, so the printed start number matches the running order. Competitions that already have results keep their numbers, as you would expect.
  • Conflicts that can't be solved are easier to spot. If a competition is shorter than the gap you asked for, no reordering can open up that gap. Those now show in a softer orange instead of red, with a note explaining why when you hover. So you can see at a glance which start times to check by hand. Often the fix is simply to start that competition fifteen minutes earlier or later.

We read every question and report. Keep them coming.

May 2026 Update: Start Time Conflict Resolver, Combined Training & Cleaner Reports

May was about saving organizers time on the schedule, filling in gaps for combined training and eventing, and tidying up the parts of the app people use under pressure during a show.

🏆 New features

Start time conflict resolver (App)

The schedule now has a "resolve start time conflicts" button. It runs in the background, finds riders and horses with clashing start times, and swaps positions to fix them. It respects section boundaries, age groups in young horse competitions, riders with several horses, and pauses, so it never moves something it shouldn't. You get a progress bar while it works through the harder cases instead of a frozen screen.

Combined training: two-phase show jumping (App)

Combined training now supports two-phase show jumping. The second round is published in online results, the show jumping deduction is applied to the total, and the PDF builds its columns from the actual rounds. Results add up the way the protocol shows them.

Cross country: "under review" fence status (App)

Cross country fences can now be marked as under review, so a contested fence is clearly flagged while it's being looked at.

Simplified Chinese (App)

Equipe is now available in Simplified Chinese (zh-Hans).

Disable specific Stripe payment methods (Entry)

Organizers can now turn off individual Stripe payment methods like Link or Klarna, instead of taking all of them or none.

✨ Improvements

Reports and economy

  • VAT on the economy report (App). The meeting economy report now shows VAT percentage and VAT amount, in the page, the PDF, and the new CSV and XLS exports. The exports include totals, and the XLS is grouped into sections with proper currency formatting.
  • Miscellaneous items are sorted alphabetically in the economy report, so the same show always lists them in the same order.

Invoicing

  • Pick the invoice date when generating invoices in batch (App). A date selector sits next to the auto-generate checkbox, limited to the meeting's date range, so batch invoices no longer always use today's date.
  • Proforma invoices are no longer published to the entry system, which keeps draft amounts from showing up where they shouldn't.

Scheduling and start lists

  • Breed and race columns are available in the start list field selector.
  • A "force ascending category order" option was added to randomize.
  • Trainer is now in the officials list.
  • Dots are allowed in category names, so names like "1.30" work.

Daily work

  • The name field is focused automatically on the new person and new horse forms, so you can start typing right away.
  • The message to the organizer is editable in point of sale.
  • Emoji can be used as a prize in kind, for the shows that like a bit of fun.
  • Fetching data no longer publishes online unless you opt in. Publishing online is now an explicit choice when you fetch, so results don't go public before you're ready.

Organizer access

  • A "this week" range button, the page you're on is kept when you change a user's access, and the index now shows each user's active show range.

Federation and language

  • Norwegian framework text is now translated. Dates, number formatting, and validation messages that used to fall back to English now show in Norwegian.
  • Your language is kept when you sign in through a federation. If you switched to your own language, signing in from a federation show no longer resets you to English.
  • Licence year accepts full dates. Federation licence year now takes both a year and a full date (yyyy-mm-dd).

Scoreboard director (App)

If you build scoreboard scenes in the director, rules gained and/or grouping and the scene now exposes the previous current value. Before this, a rule could only check that a rider was currently ranked, so a presentation would re-show and re-animate whenever a judge edited remarks after a result was already on screen. Now a rule can detect the actual moment a rider goes from unranked to ranked, and fire only then:

"rules": {
"and": {
"ne": { "current": { "re": 999 } },
"eq": { "prevCurrent": { "re": 999 } }
}
}

You can read this as: the rider is ranked now (current is not 999) and was not ranked a moment ago (prevCurrent was 999). Apply it to your presentation show and hide actions so they trigger once on submit, not on every later edit.

Value mapping with $if also gained a $default fallback. Previously, if no key matched the current value, nothing changed, and because sequences only replay when the value actually changes, the sequence would quietly not run. A $default key catches anything that doesn't match:

"motion.$if": {
"out": "in",
"horse-in": "in",
"$default": "in"
}

Explicit null, 0, false and "" values in the mapping are now applied too, instead of being skipped.

🐛 Bug fixes

  • Rider spacing in randomize was off by one. The "minimum riders between" setting could leave a rider's two horses one start too close. It now matches the number you set.
  • Numeric category names produced empty start lists. Merged or custom categories with plain numbers (like "130") were parsed ambiguously and could show an empty list or corrupt a scoreboard. Compound ids are now unambiguous and these lists load correctly.
  • Renumbering ignored unchecked class filters. Renumber now respects which classes you've selected.
  • Competitions imported from Tävlingsdatabasen now appear in the same order as the proposition.
  • Reserve list on full arenas (Entry). A competition limited only by an arena limit could still push entries onto the waiting list. It's now blocked when the arena is full and reserves are off.
  • Application fee on refunds (Entry). When a payment is refunded, Equipe's application fee is now refunded too, in full or proportionally for a partial refund.
  • Entry CSV export (Entry). Dropped the sep=; first line that pushed headers to row two, quoted the header row to match the data, and split payer and rider into first and last name columns so you can sort by surname.
  • Officials with three-letter surnames (Online). Names like "Johnny MAK" were having the surname stripped as if it were a country code on import. Fixed.
  • Marking sheet columns are only fetched when the source judgement actually supports them.
  • Collaborators can free up a locked economy (Entry). When an invoice is sent from the app, the economy on the entry is hidden. Organizers can now remove the invoice reference to make it visible and editable again.
  • Reserves no longer error when a rider link is missing its registration.
  • Do-not-compete dates no longer create phantom competitions for list-only dates.
  • Class section page (Online) returns 404 instead of an error when a start has no parent section.

📋 Regulatory and federation

  • Norwegian framework strings, federation licence year as a full date, and the corrected Tävlingsdatabasen import order are covered above.

💬 What we're hearing

A few patterns from support this month:

  • User language resetting to English. Several of you, mainly in Norway, told us your language flipped back to English every time you started from a federation show. We fixed this in May. Your chosen language now sticks.
  • Rider messages and lists online. A handful of organizers had trouble saving rider messages and custom lists in online.equipe.com. We looked into each one.
  • Team classes. Team jumping and team dressage, including ponies, stay among our most-asked topics: building teams, team line-ups, and how the totals are counted. Better documentation here is on our list.
  • Merging and splitting classes. Recurring questions about combining categories or classes that were split for horse and pony, and getting late entries into the right class.
  • Dressage judge comments. Several questions about where to type judge comments during result entry, and the QR code for dressage judges.
  • Cancelled shows. A few organizers asked what to do in Equipe when a show is cancelled.

We read every question and report. Keep them coming.

April 2026 Update: Peppol Matures, EU VAT Export, Faster Invoicing

April was about polishing the Peppol flow now that it has been running in production for a few months, adding VAT export invoicing for riders outside the EU, and making the parts of the app that organizers use every day faster.

🏆 New features

VAT export invoicing (App)

Organizers can now invoice riders outside the EU without VAT. Mark a person as outside the EU and the invoice prints as a VAT export with a single VAT sentence, not two overlapping ones. The flag stays put when you transfer balances between shows.

UK VAT number lookup (App)

We've connected to HMRC so UK VAT numbers can be validated directly, the same way we already do for EU numbers via VIES.

Peppol batch sending (App)

You can now send Peppol invoices in bulk from the people page, in the same flow you use for email invoices. A new Peppol filter helps you find the people who should get one. Peppol invoices also go out as part of the automatic invoice sending routine, so you don't have to send them manually anymore.

Team competitions in score summary (App)

Score summary disciplines now support team competitions. Individual and team results broadcast and publish together after a fetch, so live results stay in sync.

Malaysian ringgit (MYR) (App)

MYR is now a supported currency.

✨ Improvements

Dressage judge selector replaced with autocomplete (App)

The judge dropdown was sorted by first name, which made it hard to find someone when you only remembered the surname. We replaced it with an autocomplete that searches both first and last name. You can still see the full list without typing anything.

Peppol details

  • Sent Peppol invoices print as "Invoice" instead of "PRO FORMA".
  • Invoice number and date are locked once an invoice has been sent through Peppol, so the audit trail can't drift.
  • The Peppol dropdown links to the last sent PDF so you can quickly see what was actually delivered.
  • Credits are sent as negative invoice lines instead of UBL allowance charges, which fixes validation errors with some Peppol receivers.
  • Peppol no longer auto-enables from the send-to default. You opt in explicitly.

Invoice email subject truncated for many horses (App)

When an invoice covers more than three horses, the email subject is shortened instead of listing every horse name. Inboxes look cleaner.

Judge alias on "act as judge" buttons (App)

If a judge has been set up with an alias (e.g. after a last-minute swap), the act-as-judge buttons in the dressage score sheet now show the alias rather than the original position.

Webhook delivery errors notify the extension author (App)

When a webhook delivery fails, we now notify the extension author so they can fix the integration on their end. Previously these errors disappeared silently.

Online sign-in button always visible (App)

The globe button for signing in to online.equipe.com now shows regardless of whether the show is published or not. After unarchiving a show, you no longer have to publish it again to open it from the app.

Smaller things

  • Long descriptions in autocomplete textareas no longer get cut off. You can use newlines too.
  • "Timing to Equipe" is available as a bell sound in the FDS binary driver.
  • "Born year (FO)" is available as a column dependency on startlists.
  • Native share sheet works correctly on Android (Online).
  • The federation search redirects to the FEI search when the federation doesn't exist.

🐛 Bug fixes

  • Entries to closed competitions: entries started before a competition closed could still be submitted after closing. This is now blocked at submit time (Entry).
  • Stale per-judge percents on elimination: when the judge at C eliminated a rider, the other judges' percent totals and ranks weren't cleared. We now reset all derived state atomically and skip writes from non-C judges when the start is eliminated.
  • Working Equitation team results: team totals are now summed by published points (psum), matching what's shown on the protocol.
  • Custom field columns on renumbering: custom fields are now resolved when starts are renumbered.
  • Scoreboard countdown at clock auto-start: the countdown diff is broadcast to scoreboards when the clock auto-starts at 0, so the display doesn't appear frozen for a fraction of a second.
  • Score summary deadlocks: score summary jobs were occasionally deadlocking under load. They now serialize properly, and we skip duplicate team alerts.
  • Refund rounding: floating-point rounding caused entry refunds to be off by a cent in some cases (Entry).
  • FEI XML max score: deduction sections are excluded from the max score in published XML, so FEI exports don't double-count deductions.
  • Bulk updates: bulk update endpoints return 422 instead of 500 when the request body is missing top-level params.
  • Horse reports: sortable columns are validated, so a typo doesn't crash the page.
  • Start fetch: invalid from/to pairs are dropped with a clear warning instead of failing the whole import.
  • Invoice publishing: a missing rider in the entry system no longer blocks invoice publishing.
  • Class section page (Online): returns 404 instead of 500 when the meeting is missing.

📋 Regulatory updates

  • VAT export for riders outside the EU is now supported, with the correct single VAT sentence on the PDF.
  • UK VAT lookup via HMRC matches the EU VIES integration.
  • Peppol continues to mature for Belgian organizers under the 2026 mandate. See the Peppol details above for this month's fixes, and our dedicated Peppol post from December for the full background.

⚡ Faster where it matters

Performance is something we keep working on because slow software wastes the time of the people running shows. A few wins this month, in plain language:

  • Invoice and economy queries are 70-77% faster. We rewrote the economies SQL view to use a person-scoped function. Person reports went from around 1.4 seconds to roughly 300ms on large tour meetings.
  • Background jobs and caching moved off Redis. We have now done the same migration we did on Equipe Online last month. Concurrency limits on the noisiest jobs prevent the duplicate-job deadlocks we've been seeing.

You shouldn't notice any of this except that things load faster.

💬 What we're hearing

A few patterns from support this month:

  • Team jumping with individual starts: still our most-asked question, but now most users have moved on to applying the new flow to existing shows rather than asking how to set it up from scratch.
  • Peppol activation in Belgium: ongoing questions about how to get set up. We're refining the activation flow and the help article based on what we're seeing.
  • Vaccination lists: recurring questions about creating, importing from TDB, and publishing them. A help article on the full flow is on our list.
  • Working Equitation: several questions about removing the dressage section in WE classes that don't include it, and about adding judges. We're improving the docs.
  • Withdrawals with refund: a few requests for a "withdrawal with refund" option for vet certificates and similar. Noted.

We read every question and report. Keep them coming.