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:
- School horse allowed: at least one school-horse cash price OR at least one card with horse type
School horse/Both - Own horse allowed: at least one own-horse cash price OR at least one card with horse type
Own horse/Both
In the lesson detail, two InfoRows are shown - one per allowed horse type:
- "With school horse: Cash or card"
- "With school horse: Cash" (cash only, no matching card linked)
- "With own horse: Card only" (card only, no own-horse cash price)
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:
- The booking is created with status
payment_method = cash - No card deduction
- An open cash entry appears in your receivables list
- 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:
- Yellow cash icon = open
- Green checkmark = already paid
- "Paid" button (compact, next to the attendance status)
- "Cancel" button (for cash receivables not yet collected)
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:
- Member (or managed person), lesson, date, amount, riding instructor
- "Paid" button - marks the receivable as paid
- "Cancel" button - opens the reason sheet (mandatory reason)
"Cards in minus" - Members with a negative balance on a card. For each entry:
- Member, card type, negative balance
- "Reset to 0" button - opens the reason sheet, resets the balance (e.g. after a manual cash payment)
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:
- Cash due - the receivable is still outstanding
- Cash paid - the receivable has been collected
- Receivable cancelled - the receivable was set to €0
- Refunded - money already paid was returned
Depending on the status, the action menu offers these actions:
- Mark as paid - records an open cash receivable as paid (short confirmation, no reason needed).
- Cancel receivable - reason is mandatory; creates a €0 entry in the finance statistics (like Scenario 2).
- Refund - reason is mandatory; creates a negative offsetting entry in the finance statistics (like Scenario 3).
- Cancel booking - reason optional. If the cancellation deadline has already passed, the override dialog "Cancel anyway" appears (and, if rebooking is allowed, additionally "Rebook").
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:
- The reason sheet opens (e.g. "Wrong tariff, replaced with the correct card")
- Confirm
- The card is removed from the member
- Negative offsetting entry in the finance overview (red, with a minus)
- 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:
- The reason sheet opens
- Confirm
- The entry appears with €0 + badge in the statistics (visually set off with opacity 0.6)
- 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:
- The reason sheet opens
- Confirm
- Negative offsetting entry with a minus amount in the statistics
- The original payment stays visible, the "paid" status is reverted
- The member's balance for this booking: 0
Statistics impact
| Action | Sales list | Total income | Receipt-number sequence |
|---|---|---|---|
| Card sale | Entry with receipt number | +Amount | gapless |
| Card cancellation | Negative offsetting entry, red | -Amount | gapless, new receipt |
| Cash paid | Entry (no receipt-number cycle) | +Amount | none |
| Cash receivable cancelled (unpaid) | Entry with €0 + badge | unchanged | none |
| Cash refund (paid → returned) | Negative offsetting entry | -Amount | none |
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:
- For cards: in the card transaction history (Members tab → open member → open lesson card) - every transaction is listed there including the cancellation reason
- For cash bookings: in the sales/finance list of the statistics (Admin → Statistics → Revenue tab). Cancellations appear there inline with a badge ("Reversal"/"Receivable cancelled"); there is no separate "cancellations only" filter.
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.