Help centre
Guide for club admins
Everything you need to set up your stable, manage staff, accept payments, and run reports.
1. Run the onboarding wizard
After signing up as a stable, you’re taken through a five-step wizard:
- Club basics (name, city, branding).
- Arenas (one or more, with capacity per slot).
- Lesson types (group, private, hack — with default pricing and duration).
- Staff (invite coaches, grooms, managers; pick a role).
- Payments (connect Stripe, Ziina, or N-Genius — or skip and add later).
You can come back and edit anything from Settings.
2. Connect a payment processor
Cavaliq is not a payment processor. Each stable connects its own account so the money lands in the stable’s bank, not in a Cavaliq escrow. Connection lives in Settings → Payments. Most stables enable two: one for cards, one for the UAE Ziina wallet.
Stripe
Available globally. Best card processor for stables that take international cards.
- Sign in at dashboard.stripe.com.
- Go to Developers → API keys. Copy the Publishable key (
pk_live_…) and Secret key (sk_live_…) — use the live versions for real payments, the test versions for sandbox testing. The two keys must be the same mode. - Go to Developers → Webhooks → Add endpoint. URL is
https://cavaliq.com/api/webhooks/stripe/<your-club-id>— Cavaliq fills in the club id for you in Settings. Subscribe topayment_intent.succeeded,payment_intent.payment_failed,payment_intent.canceled,charge.refunded, andcharge.refund.updated. Copy the signing secret (whsec_…) and paste it alongside the keys.
Stripe’s decline codes are documented at docs.stripe.com/declines/codes if you need to investigate a specific failure.
Ziina (UAE wallet + card)
UAE-focused. Riders without a Ziina account can still pay by card through the Ziina hosted page.
- Activate a business profile at ziina.com/business if you don’t already have one.
- In Ziina’s dashboard, generate an API key (single string, no prefix needed). Paste it into Cavaliq.
- In Ziina’s webhooks panel, add an endpoint pointing at
https://cavaliq.com/api/webhooks/ziina/<your-club-id>. Subscribe topayment_intent.status.updatedandrefund.status.updated. Copy the webhook signing secret (Ziina shows it once) and paste it into Cavaliq.
Ziina’s API reference: docs.ziina.com/api-reference/payment-intent and /refund. Getting-started guide: docs.ziina.com/getting-started.
N-Genius (Network International)
UAE card processing. Good for cards that have trouble with international gateways. The connect form needs three pieces of info — get them from your N-Genius merchant portal.
- Sign in at portal.ngenius-payments.com.
- Settings → Integration → Service Accounts. Generate a new service account key. Paste it into Cavaliq as API key (no transformation — paste as-is).
- Settings → Organizational Hierarchy. Copy your Outlet reference (a short alphanumeric like
e1c4e7…). - Some merchant configurations also need a Realm name for identity exchange — N-Genius support can tell you whether yours does. Leave blank if your setup works without it; you’ll get a clear error at connect time if it’s required.
- Webhooks: in the merchant portal, configure a custom header (e.g.
X-Webhook-Token) with a secret value of your choice. Point the webhook athttps://cavaliq.com/api/webhooks/n-geniusand paste the same header name + secret into Cavaliq. N-Genius doesn’t HMAC-sign payloads — the shared header is how we authenticate.
N-Genius docs: Create an order, Refund a capture, Webhooks.
3. Invite staff with the right role
Cavaliq has the following roles:
- Club admin: full access, including billing and settings.
- Club manager: day-to-day operations.
- Coach: own schedule, rider profiles, lesson notes.
- Horse owner: read-only on their own horses.
- Rider / parent: book and manage their lessons.
- Groom: horse care tasks and reminders.
Give each staff member only the access they need. Remove access promptly when someone leaves.
4. Cancellation and refund rules
Default cancellation windows (24h / 12h / 0h) are in Settings → Bookings. You can tighten or loosen them per lesson type. The rules you set are shown to riders before they pay — see the refund policy for the framework.
5. Horse profiles and care
Add each horse under Horses → Add horse. Fill in basics, weight limits, and skill match. Use the health tabs to log vet visits, vaccinations, farrier and dental appointments, feeding plans, and exercise sessions. Cavaliq sends reminders before each recurring care item is due.
6. Finance and reports
The Finances page shows the day’s revenue across processors, with per-currency breakdowns. The Reports page exports rider rosters, lesson attendance, and payment summaries to CSV.
7. Communications
Use Emails to send announcements (e.g. arena closure, holiday hours). All emails go through our transactional email provider; unsubscribe links are added automatically for marketing-style emails.
8. Subscription and billing
Your Cavaliq subscription is in Settings → Billing. You can:
- Change plan (Starter / Growing / Professional).
- Switch to annual (two months free).
- Update payment method.
- Cancel — your access continues to the end of the period and the plan won’t renew.
9. Data protection and compliance
When riders sign up to your stable, you become the data controller for their operational data. Read the Data Processing Addendum to understand the commitments we’ve made to you, and the privacy policy for the wider posture.
10. Reference: the integrations Cavaliq runs on
These are the third-party services Cavaliq uses on your behalf — useful context if you ever need to debug a delivery, check a payment status, or rotate a credential.
- Authentication: Clerk — sign-in, sessions, password reset, organization roles. Operator dashboard: dashboard.clerk.com.
- Transactional email: Resend — booking confirmations, livery invoices, password reset. Operator dashboard: resend.com/domains.
- Hosting + runtime: Cloudflare Workers (deployed via OpenNext for Next.js). Status: cloudflarestatus.com.
- Database: Neon (serverless Postgres). Status: neonstatus.com.
- Rate limiting: Upstash Redis — protects login + payment endpoints from brute force / abuse. Transparent to operators unless you see a rate-limit message in the UI.
- Error tracking: Sentry — collects crash reports + error traces. PII is scrubbed before send (per our privacy policy).
- File storage: Cloudflare R2 — horse photos, club branding assets, uploaded documents. Files are scoped per-club; one club can never read another’s uploads.
Full list of subprocessors and the data each handles is in our subprocessors page.
