All help articles

Billing and payment model for riding lessons in StalliQ

As of: June 2026 · App version 1.0.0+ · Last verified: 25/06/2026

Here's how the payment model in StalliQ works: For each riding lesson you define two separate cash prices (with/without a school horse) and/or a selection of accepted lesson cards. When booking, students first pick their horse and then the payment method from the picker. Cash bookings create open receivables, which you mark as paid or cancel in the attendance check or in the admin list "Receivables". For every cancellation - card sale, open cash receivable or already-paid cash lesson - you enter a mandatory reason. The system automatically creates accounting-correct offsetting entries.

Requirements

You need a stable plan from Stable S upwards and the "Manage schedule" permission for cash billing (receivables, statistics, collecting and cancelling cash). To sell and cancel lesson cards you additionally need "Manage quotas". The "Record attendance" permission is only enough for the plain attendance checkmark in the attendance check - not for collecting payments or cancelling. In addition, riding lessons must be configured with a payment model (see Creating a schedule).

Horse-type permission per lesson

For each lesson you control which horse types are allowed - implicitly via the payment configuration:

In the lesson detail, two InfoRows are shown - one per allowed horse type:

This way the student sees at a glance what's possible. A horse type without an InfoRow is not allowed for the lesson.

Soft warning when only one cash price is set

If you allow cards for both horse types (e.g. a "Both" card or one per type), but only one of the two cash prices is filled in, StalliQ shows a short hint as a toast when you save:

"Note: Cards allow both horse types, but only one single price is filled in. The usual setup is both or neither - otherwise one horse type can only book by card."

It doesn't block - valid models are possible (e.g. "school horse by card only" while own-horse riders pay cash or card). Just add the missing cash price if it was an oversight.

Cash booking in the student flow

When the student picks "Pay cash · €X" in the booking picker:

  1. The booking is created with status payment_method = cash
  2. No card deduction
  3. An open cash entry appears in your receivables list
  4. During attendance recording you can collect the cash

Collecting cash receivables

You have two ways to mark cash as paid:

Way A - Inline in the attendance check (riding instructor)

Open the completed lesson in the occupancy tab. For each cash booking you see in the participant row:

Tap "Paid" → the entry is immediately marked as paid, appears in the finance overview and is removed from the open receivables list.

Way B - Admin list "Receivables"

Go to Admin → Receivables. The list has two tabs:

"Cash due" - All cash bookings without a "Paid" mark. For each entry you see:

"Cards in minus" - Members with a negative balance on a card. For each entry:

Important: only single cards (regular lesson cards with a fixed balance) can go into the minus - e.g. when an instructor records a lesson retroactively even though the card was already empty. Subscription cards (card type with a monthly quota) can never go into the minus: once the quota for the current period is used up, StalliQ immediately rejects any further card booking. The student can then only book that lesson if cash payment is also configured for the event - otherwise the booking stays blocked until the next period starts. Subscription cards therefore never appear in the "Cards in minus" list.

Cash and cancellation in the web portal

You can handle the full cash and cancellation management not only in the mobile app but also in the web portal (portal.stalliq.app). It is the same logic and billing as in the app - just additionally available in the browser. It remains pure administration by stable operators and riding instructors; there is no student self-service. The permissions are unchanged ("Manage schedule" or "Manage quotas").

You work per participant via the action menu on the appointment detail page. Each participant with a cash booking has a cash status badge with four states:

Depending on the status, the action menu offers these actions:

For details on rebooking and changing the payment method, see the article Booking and managing riding lessons.

Cancelling - three scenarios

Every cancellation needs a mandatory reason (free text, multiline, at least 1 character). StalliQ automatically creates offsetting accounting entries so the receipt-number sequence stays gapless.

Scenario 1 - Card sale booked incorrectly

When: You sold a person the wrong card (wrong type, wrong member).

Requirement: No unit may have been used yet.

Where: Admin → Statistics → Revenue tab → tap the sale entry → "Cancel".

What happens:

  1. The reason sheet opens (e.g. "Wrong tariff, replaced with the correct card")
  2. Confirm
  3. The card is removed from the member
  4. Negative offsetting entry in the finance overview (red, with a minus)
  5. The original sale stays visible with a "cancelled" badge

Error case: Units already used → "Cancellation not possible - lessons have already been used from this card. Please reverse the bookings first." First cancel the affected bookings (attendance set to "Excused"), then cancel the card.

Scenario 2 - Cash receivable open, lesson cancelled

When: The lesson was cancelled or the student didn't show up, and you don't want to collect the receivable.

Where: Inline in the attendance check (open the lesson → "Cancel") OR in Admin → Receivables → "Cash due" → "Cancel".

What happens:

  1. The reason sheet opens
  2. Confirm
  3. The entry appears with €0 + badge in the statistics (visually set off with opacity 0.6)
  4. The open receivable disappears from the "Cash due" list

Scenario 3 - Cash already paid, refund needed

When: The student has already paid cash, but you have to give money back (e.g. goodwill, double payment).

Where: Admin → Statistics → Revenue tab → tap the already-paid cash entry → "Cancel".

What happens:

  1. The reason sheet opens
  2. Confirm
  3. Negative offsetting entry with a minus amount in the statistics
  4. The original payment stays visible, the "paid" status is reverted
  5. The member's balance for this booking: 0

Statistics impact

ActionSales listTotal incomeReceipt-number sequence
Card saleEntry with receipt number+Amountgapless
Card cancellationNegative offsetting entry, red-Amountgapless, new receipt
Cash paidEntry (no receipt-number cycle)+Amountnone
Cash receivable cancelled (unpaid)Entry with €0 + badgeunchangednone
Cash refund (paid → returned)Negative offsetting entry-Amountnone

Refund + cancellation badges in the statistics header show at any time how many corrections were made in the current period.

Who may cancel?

Cash cancellations and marking "Paid" require the "Manage schedule" permission on the server (alternatively "Manage quotas"). Card cancellations require "Manage quotas" (alternatively "Manage schedule"). The "Record attendance" permission alone is not enough for any cancellation or collection action: in the attendance check the "Paid"/"Cancel" buttons are shown, but the server then rejects the action with "Access denied". Owners and managers automatically have all required permissions.

Audit trail

Every cancellation logs: who cancelled which entry, when, and for what reason. You'll find the history:

Frequently asked questions

Can I cancel a card booking whose units have already been used?

Not directly. First cancel the affected bookings (change the lessons' attendance to "Excused", then the units come back onto the card) and then cancel the card sale.

What happens to the receipt number on a cancellation?

It is preserved. The cancellation creates a new receipt with its own number and a negative amount - this keeps the sequence gapless and accounting-clean. Both receipts (original + cancellation) are visible in the PDF/CSV export.

Can a student mark a cash receivable as paid themselves?

No. Only riding instructors + managers + owners can mark "Paid". In their booking history, the student sees the status "Cash due" or "Cash paid".

What happens if I accidentally mark a cash receivable as paid?

You can reverse the action: Admin → Statistics → Revenue tab → open the paid cash entry → "Cancel" (Scenario 3, refund). This resets the status to "open" and creates a negative offsetting entry - the member's balance is unchanged again.

How does the student see the cancellation?

For card cancellations: push notification + entry in the card transaction history with the mandatory reason. For cash cancellations: entry in their own booking history with the note "cancelled" and the reason you entered.

Can my students buy and pay for lesson cards directly in the app online?

No. StalliQ does not process online payments - there is no credit card, PayPal or direct debit integration for students. Selling lesson cards and collecting cash lessons happen offline as usual (cash or bank transfer). What StalliQ does is record and document: when you sell a card you store the payment method (cash, bank transfer, EC card) and get a sequential receipt, cash receivables collect automatically in the receivables list where you mark them as paid. That gives you a constant overview of open and settled amounts plus a clean PDF/CSV export for your accounting - but the actual money flows outside the app.