Payments
This page explains how payment records are created in Agon, how to connect your own Stripe account for online card payments, and where to see payment totals.
Payments isn't a page of its own in the left sidebar. Payment-related settings live under Settings → Billing, and payment totals live under Reports → Revenue.
How payments work in Agon
Agon doesn't process payments itself, and there's no screen for manually recording a payment or
clicking a refund button. A Payment record is created automatically, in one of two ways:
- Stripe checkout — once you connect your own Stripe account (see below), a client can pay online for a membership, or a self-purchased gift card, from the mobile app. Money flows directly between your client and your own bank account; Agon never holds funds.
- A late-cancellation or no-show fee — when one is actually charged (see
Settings — cancellation policy and
Memberships — fee overrides), Agon records it as a
Paymentwith providersystem.
Assigning a membership to a client manually (see Memberships) does not create a payment record — it only grants the membership. If a client pays you in cash or by bank transfer, there is currently no way to log that payment inside Agon; you simply assign the membership itself, exactly as you would for a free trial.
Retail product sales are tracked separately (see POS / Retail) as their own records,
not as Payment rows — they show up in the separate Product Sales report, not in Revenue.
Connecting Stripe
Agon offers two ways to connect your own Stripe account. For most studio managers, Connect with Stripe is the simpler choice, since you never have to find or paste an API key yourself. If you already have Stripe API keys, or prefer not to use the OAuth flow, you can enter them manually instead — both paths are fully supported.
Option A: Connect with Stripe (recommended)
- Go to Settings → Billing.
- Click Connect with Stripe.
- Your browser opens Stripe's own hosted authorization page. Log in to your existing Stripe account, or create one, and authorize Agon.
- Stripe redirects you to a short Agon-hosted confirmation page. Close that tab and return to Agon.
- The Stripe connection status in Settings → Billing updates to Connected — either automatically when you switch back to the Agon window, or after clicking Refresh status.
This connects your own Stripe account directly — Agon never holds your funds, and there's no shared platform account standing between you and Stripe.
Option B: Enter your Stripe API keys manually
Use this path if you already have Stripe API keys at hand, or prefer not to use the OAuth flow above.
- Go to Settings → Billing and open Advanced options.
- Enter your Secret key and Publishable key, from your own Stripe Dashboard (Developers → API keys).
- Click Save.
The Stripe connection status switches to Connected once valid keys are saved.
Setting up the webhook
The Webhook secret field is always visible in Settings → Billing — it's never hidden in Advanced options — because Agon needs it to reliably learn about successful payments, subscription renewals, failed payments, and cancellations.
- If you connected with Option B (manual keys), Agon registers the webhook for you automatically. There's nothing else to do.
- If you connected with Option A (Connect with Stripe), Stripe's own restrictions usually prevent Agon from registering the webhook automatically — this is a platform limitation, not something Agon failed to build. Agon shows you the exact webhook URL to register, and you'll need to create the webhook yourself, once, in your own Stripe Dashboard — see Stripe Webhook Setup for the exact steps.
If your studio has an active recurring (subscription) membership type but no webhook secret saved, Agon shows a warning in Settings → Billing, since recurring billing has no other way to detect renewals, failures, or cancellations.
Changing or removing your Stripe keys
There's no separate "Disconnect Stripe" action. To stop accepting Stripe payments, revoke or roll the key from your own Stripe Dashboard — client checkouts will then fail until you save a new working key in Settings → Billing, or clear the ones you no longer want to use.
Issuing a refund
Agon has no refund button of its own:
- Stripe payment — process the refund from your Stripe Dashboard. Agon picks up the result on the next webhook delivery, which updates the payment's status here.
- Cash or bank transfer — hand the money back yourself; there's nothing to update in Agon either way, since that payment was never recorded here in the first place.
Payment statuses
| Status | EN | IT | FR | DE | ES | PT | NL |
|---|---|---|---|---|---|---|---|
| Completed | Completed | Completato | Complété | Abgeschlossen | Completado | Concluído | Voltooid |
| Refunded | Refunded | Rimborsato | Remboursé | Erstattet | Reembolsado | Reembolsado | Terugbetaald |
| Failed | Failed | Fallito | Échoué | Fehlgeschlagen | Fallido | Falhou | Mislukt |
Viewing payment totals
Go to Reports → Revenue for total revenue, number of payments, and average payment amount over
a date range. There is currently no screen that lists an individual client's payment history.
Manually-assigned, cash-paid memberships won't appear in Revenue either, since they never create a
Payment record (see above).
What if something goes wrong?
A Stripe payment shows as Pending Wait a few minutes — Stripe webhooks can be delayed. If it's still pending after 10 minutes, check your Stripe Dashboard, and confirm the Webhook secret in Settings → Billing matches the one shown in Stripe.
The Stripe connection shows as Not connected Go to Settings → Billing and either click Connect with Stripe again, or, if you're using the manual path, re-enter your Secret key and Publishable key under Advanced options.
My Revenue numbers look lower than what I actually collected
Check whether some memberships were assigned manually instead of paid through Stripe checkout —
those never create a Payment record, so they don't count toward Revenue.