Skip to content
easygym

Documentation for club owners

How to take card payments through Stripe

Club clients pay by card, Apple Pay or Google Pay, and the money goes to the club’s own Stripe account. This page walks the whole way from opening the account to the first real payment — in the same order as the setup wizard in easygym settings — and then covers payouts, fees, refunds, auto-renewal and payments at the front desk.

Feature overview: Card payments through Stripe

Open the wizard in the adminChecked against the Stripe documentation on 20 September 2026Stripe documentation (opens in a new tab)

Licensing, tax and accounting questions depend on the country and the business — check them with your accountant. Stripe may change its terms: the current ones are in its documentation.

Contents

How the money moves

A club on easygym sells memberships on its own website and at the front desk. The client pays on a Stripe payment page — by card, Apple Pay or Google Pay — and the membership activates by itself as soon as Stripe confirms the payment.

  • The money goes to the club’s own Stripe account, and Stripe pays it out to the club’s bank account.
  • No developer, separate website or certificates are needed: Stripe shows the payment page, and easygym provides the club website with the plans, the offer, refund terms and contacts.
  • Staff see online payments, and payments that need a refund, on the “Payments” tab and in each client’s card.

Two separate money lines

Line 1

Membership payments

Club client→Club’s Stripe account

The club opens its own Stripe account and enters its keys in its own settings; Stripe pays the money out to the club’s bank account. Refunds, disputed payments and receipts are on the club as the seller, too.

Line 2

The easygym fee

Club owner→easygym

A separate payment on the platform website. It is not tied to club clients’ payments and is never deducted from them.

The principle

Club clients pay straight into the club’s own Stripe account, and Stripe pays the money out to the club’s bank account. easygym never receives, holds or distributes this money. With the club’s Stripe key it creates payments and checks their status, and on an action by the club owner or an administrator it can refund a payment — the money then goes back to the card it was paid from. easygym cannot receive or transfer the club’s funds. The fee for easygym itself is paid separately, on the platform website.

Why the club has its own account rather than a shared easygym one: taking money on behalf of others and passing it on is a regulated financial service. With the club’s own Stripe account easygym does not stand between the client and the club — the money never passes through easygym, and it cannot receive or transfer the club’s funds. easygym uses the club’s key only to create payments, check them, charge saved cards with the client’s consent and refund payments.

Payments in the UAE

The numbers below are for a Stripe account registered in the UAE. For an account in another country Stripe has its own rates and its own payout rules — the pages these numbers come from are linked at the end of the section, and the date they were checked is at the top of this page.

What clients can pay with

Visa and Mastercard — the same cards through Apple Pay, Google Pay and Link. American Express is not on Stripe’s list for accounts in the UAE. Tabby and Tamara do not go through Stripe at all: a club that sells a yearly membership in instalments arranges that with them separately, outside easygym.

What Stripe keeps

Stripe keeps 2.9% + AED 1.00 of a successful payment with a card issued in the UAE. A card issued elsewhere — a tourist or a guest on holiday — adds 1%, and a payment Stripe has to convert adds another 1%.

On a membership of AED 300.00 that is about AED 9.70. The smallest payment Stripe takes is AED 2.00 — a cheaper one is paid in cash or on the club’s own card terminal.

Stripe takes its fee out of the payment before the payout, and easygym takes nothing out of client money at all.

When the money reaches the club

Stripe pays out in dirhams and only to a bank account in the UAE. The first payout goes about 7 days after the first payment; after that the money for a payment arrives in 5 business days. Payouts land on working days, never on a weekend or a public holiday, and the smallest payout is AED 20.00.

Tell clients about this before the launch: the money for the first memberships sold is not late, it is simply still on the way.

Tax and receipts

No fiscal device is needed in the UAE, and Stripe adds no tax to the price: the client pays exactly the amount on the website, and easygym emails them a receipt for it. A club registered for VAT therefore puts the tax inside the plan price and shows its TRN in the seller details — they go on the receipt and onto the offer page of the website.

Step 1

Stripe account

The club needs its own Stripe account: this is where client money goes. Open it for the business that sells memberships to clients — the one named as the seller in the offer on the club website.

What Stripe asks for

Stripe verifies the business before the account can take real money. What exactly it asks for depends on the country and the type of business, and Stripe shows the list while you activate the account.

  • In the UAE, the account is opened for a business with a trade licence.
  • In the US, for a company or a sole proprietor, with the business details Stripe asks for.
  • In other countries, check first that Stripe works there: the list of countries is on its website.
  • Everywhere, Stripe asks about the business and the people behind it, and for a bank account to pay the money out to.

How to open the account

  1. Sign up at stripe.com with the club’s business email.
  2. Activate payments: the business details, its owner and the bank account for payouts. Until then the account works only in test mode — meanwhile you can go through the whole wizard with test keys.
  3. Fill in the public details: the business name, the website — give it the club website on easygym — and support contacts. Clients see them on the payment page, in Stripe receipts and on their card statements.
  4. In the same public details set the statement descriptor: the short name that stands next to the charge in the client’s bank app. Put the club name in it — a line nobody recognises a month after the purchase is what sends people to their bank to dispute the charge instead of calling the club.
  5. In Settings → Branding set the club’s logo and colours, so the payment page looks like the club.

The country of an account cannot be changed after activation: a business in another country needs its own account.

In the easygym wizard

Mark “Account created” once the account is open: Stripe does not tell easygym about new accounts. Once the keys are connected, the step is marked by itself.

Open this step in the admin (opens in a new tab)

Step 2

API keys and webhook

easygym works with the club’s Stripe account through an API key. In the Stripe Dashboard open Developers → API keys. A secret key (sk_…) will work, but we recommend a restricted key (rk_…): it can do only what you allow, and if it ever leaks, nobody can use it for anything else.

A restricted key for easygym

  1. On the API keys page choose “Create restricted key” and name it, for example, “easygym”.
  2. Set the permissions from the table below and leave everything else at “None”.
  3. Create the key and copy it right away: Stripe shows it only once.

Permissions the key needs

Permissions the key needs
Checkout SessionsWriteOpens payment pages — for purchases on the website and for QR payments at the front desk — closes unpaid ones and checks their status.
PaymentIntentsWriteChecks payments and charges a saved card for auto-renewal.
PaymentMethodsWriteShows the masked number of a saved card and detaches the card when the client removes it.
CustomersWriteA saved card belongs to a Stripe customer: the payment page creates one, and auto-renewal charges the card on it.
RefundsWriteRefunds a payment when staff press “Refund” in easygym, and reads a payment’s refunds when Stripe reports one — to record a refund made from easygym, or one the client’s bank did not accept.
ChargesReadReads the charge when Stripe reports a refund made in the Stripe Dashboard.
Webhook EndpointsWriteCreates the webhook in the club’s account when the key is connected, and removes it when payments are disconnected.
AccountRead, optionalOnly to show the account name in the admin. Without it the key connects all the same.

Write access includes read access. If the key lacks a permission, Stripe refuses the request, and the key’s request log in the Stripe Dashboard shows which request failed — add the permission with “Edit key”.

Where to paste the key

  1. In the admin open Settings → Payments — step 2 of the wizard.
  2. Paste the key into “Secret key”. The publishable key (pk_…) is optional: payment pages work without it.
  3. Press “Verify and connect”. easygym first checks the key with Stripe and creates the webhook, and only then saves the key — encrypted.

The saved key is never shown again, not even to the club owner. To change it, press “Replace keys” and paste a new one; “Disconnect” deletes it from easygym.

In the easygym wizard

The step is marked by itself once Stripe accepts the key and the webhook is in place.

Open this step in the admin (opens in a new tab)

Step 3

Test payment

Before taking real money, walk the client’s path with test keys: they work like live ones, but no money moves. In Stripe this is test mode, also called a sandbox, and its keys start with sk_test_ or rk_test_.

How to check

  1. Connect a test key in step 2, the same way as a live one.
  2. In step 3 create a small payment in the club currency — AED 4.00, $1.00, or €1.00. The amount is a little above the Stripe minimum, so it goes through whatever currency the account pays out in. Open the payment page and pay with a test card.
  3. Press “Check payment”: easygym asks Stripe whether the payment has arrived.
  4. Refund the payment with the button in the same step — it goes back the way a real refund would.
  5. For the full picture, buy a plan on the club website: the membership becomes active, an email arrives and the purchase appears in the client’s account.

Test cards

Card 4242 4242 4242 4242 with any future expiry date and any CVC always goes through. Card 4000 0000 0000 0002 is always declined — this is how you see what a client sees when the bank says no.

Stripe takes payments in the club currency when it is AED, USD, or EUR. For any other currency the wizard creates no test payment: change the club currency first.

In the easygym wizard

The step is marked by itself once Stripe confirms the test payment.

Open this step in the admin (opens in a new tab)

Live mode

Test and live mode in Stripe are separate: each has its own keys, permissions and webhooks. So after the test you connect a live key the same way.

Now the money is real

Once a live key is connected, clients pay into the club’s account for real, and test cards no longer go through.

Switching to live

  1. Wait until Stripe activates the account: without that, live keys take no payments.
  2. In live mode create the same restricted key (rk_live_…) with the same permissions.
  3. In step 2 press “Replace keys” and paste the live key. easygym creates a new webhook for it and removes the one it created before.
  4. Make the first real payment: buy the cheapest plan on the club website with your own card, or create a payment in step 3 and refund it.

The admin shows which mode is connected: “Test mode” or “Live mode”.

“Disconnect” deletes the keys from easygym and removes the webhook easygym created, and the website stops opening payment pages. A page a client has already opened can still be paid in Stripe, but easygym will not see that payment — check such payments in the Stripe Dashboard.

Webhook: how payments reach easygym

Stripe reports each payment to easygym through a webhook — an address in easygym that Stripe calls when something happens to a payment. That is why a membership activates the moment the client pays, even if they close the page right away.

easygym creates it itself

When you connect the key, easygym creates the webhook in the club’s Stripe account: at this club’s own address, only for the events it needs, with the description “easygym”. It saves the webhook’s signing secret and checks every message against it, so a forged message is rejected.

Events easygym subscribes to

  • payment_intent.succeeded
  • payment_intent.processing
  • payment_intent.payment_failed
  • payment_intent.canceled
  • checkout.session.completed
  • checkout.session.expired
  • charge.refunded
  • charge.refund.updated

Other events of your account never reach easygym: the account can keep serving your other tools.

If easygym cannot create it

A key without the Webhook Endpoints permission, or an address Stripe does not accept, stops the wizard with an explanation. Then create the webhook by hand:

  1. In the Stripe Dashboard open Developers → Webhooks and add an endpoint.
  2. Endpoint URL — the address shown in step 2 of the wizard under “Adding the webhook by hand”, with a copy button.
  3. Select the events from the list above.
  4. Open the new endpoint, reveal its signing secret (whsec_…) and paste it into “Webhook signing secret (optional)” together with the key.

For a local test setup, forward events with the Stripe CLI (stripe listen) and paste the signing secret it prints.

Keep the webhook

Do not delete or disable the easygym webhook in Stripe: payments would still go through, but easygym would learn about them late. If it was deleted, connect the key again — easygym will create a new one.

Payouts

Payments collect in the balance of the club’s Stripe account, and Stripe pays them out to the club’s bank account on the payout schedule of that account. The first payout usually takes longer than the following ones.

easygym takes no part in payouts and does not see them: every payout and its expected arrival date are shown in the Stripe Dashboard.

The bank account for payouts is added and changed in the Stripe payout settings. Which accounts and currencies are possible depends on the country of the Stripe account.

For an account in the UAE the currency, the schedule and the smallest payout are in “Payments in the UAE”.

Fees

Stripe charges its fees under the club’s own agreement with it. The rates depend on the country of the account, the card and the payment method, and they change — so we do not quote them here: the current ones are on the Stripe pricing page.

For an account in the UAE — the main market — the rates are in “Payments in the UAE”.

easygym deducts nothing from client payments. Its own fee is a separate payment for the platform, not a share of the club’s revenue.

What happens to the Stripe fee when a payment is refunded, and what a dispute costs, is also on the Stripe pricing page.

Refunds

The club is the seller, so it decides on refunds — under the terms on the refunds page of its website.

A refund from easygym

  1. Open the payment in the client’s card: Members → Online payments → Refund.
  2. Enter the amount — everything that remains on the payment, or less — write the reason and confirm. easygym refunds it to the card the client paid with. A refund of everything that remains at once cancels the membership and the access the payment paid for; a partial refund leaves them.
  3. When the money reaches the client depends on their bank. Until Stripe confirms the refund, the payment shows “Refund in progress”.

Refunds are available to staff who manage the club’s money.

A refund in the Stripe Dashboard

You can also refund in the Stripe Dashboard. easygym learns about a full refund and marks the payment as refunded, but leaves the membership as it is — what to do with it is up to the club. A partial refund does not change the payment in easygym.

If money arrives for a sale that has already been voided — say, a guest paid the QR page after the cashier cancelled it — easygym marks the payment “Needs refund” on the “Payments” tab: refund it to the client.

Rarely, the client’s bank does not accept a refund made from easygym or a full refund from the Stripe Dashboard — say, the card has been closed. Stripe then puts the money back in the club’s balance, which can take up to 30 days. easygym marks the payment “Needs refund” on the “Payments” tab with the bank’s reason, and the client’s card shows “Bank declined the refund”. Refund it again from there, or return the money to the client another way. A membership cancelled with the refund stays cancelled. A failed partial refund from the Stripe Dashboard changes nothing in easygym, just like the partial refund itself.

Disputes (chargebacks) are handled in the Stripe Dashboard: easygym does not receive them. How to respond to one is explained in the Stripe documentation.

Saved cards and auto-renewal

For a membership to renew by itself, the client’s card has to be saved. The card is stored in the club’s Stripe account: easygym keeps only Stripe’s reference to it and the masked number — never the full number, the expiry date or the CVC.

How it works

  • The card is saved only with the client’s separate consent on the purchase page, next to the auto-renewal terms: the amount, how often and how to cancel.
  • Before the first automatic charge, and before a charge at a new price, the client gets an email in advance.
  • On the charge date, a few days before the renewal date, easygym charges the saved card through the club’s Stripe account, without the client.
  • If the bank declines, or asks the client to confirm the payment, the client gets an email with a link to pay, and easygym tries the card again over the following days. If every attempt fails, auto-renewal stops, and the renewal can still be paid by the link.
  • After every charge the client gets a receipt by email.
  • The client stops auto-renewal in their account: My account → Memberships → Stop auto-renewal. A card removed there is also detached in Stripe.

Card payments at the front desk

The front desk needs no card terminal for Stripe: the guest pays on their own phone, and the money goes to the same club Stripe account as payments on the website.

How it goes

  1. The cashier adds items to the receipt in the register and chooses “Card (QR)”.
  2. “Show QR code” opens a Stripe payment page for the receipt amount and shows its QR code on the screen.
  3. The guest scans the code with the phone camera and pays by card, Apple Pay or Google Pay.
  4. As soon as Stripe confirms the payment, the register shows “Payment received”: the sale is recorded and the stock is updated.

Good to know

  • The payment page stays open for a limited time, and the register shows how long. If the guest changes their mind, “Cancel payment” closes the page, and the receipt can be paid another way.
  • The register takes cards from AED 2.00, $0.60, or €0.60 — never below the Stripe minimum. Stripe counts its minimum in the currency the account pays out in, after conversion, so the dollar and euro limits sit a little above it. A smaller receipt is paid in cash or on the terminal.
  • A bank card terminal, if the club has one, stays a separate payment method: the cashier records such a payment by hand, and the money goes wherever the terminal’s bank pays it.
  • If the guest pays after the sale was voided, the money still reaches the club’s Stripe account, and easygym shows the payment as one to refund.

FAQ

Does easygym receive club clients’ money?
Club clients pay straight into the club’s own Stripe account, and Stripe pays the money out to the club’s bank account. easygym never receives, holds or distributes this money. With the club’s Stripe key it creates payments and checks their status, and on an action by the club owner or an administrator it can refund a payment — the money then goes back to the card it was paid from. easygym cannot receive or transfer the club’s funds. The fee for easygym itself is paid separately, on the platform website.
How much does taking card payments cost?
Stripe charges its fees under the club’s own agreement with it — the rates for your country are on the Stripe pricing page. easygym deducts nothing from client payments.
When does the money reach the bank account?
On the payout schedule of the club’s Stripe account. The first payout usually takes longer; the date of every payout is in the Stripe Dashboard.
Can I use a Stripe account I already have?
Yes. easygym creates its own webhook for only the events it needs and does not touch the rest of the account. Create a separate restricted key for easygym, so you can revoke it without affecting your other tools.
Which currencies can clients pay in?
In the club currency, when it is AED, USD, or EUR. Every payment on the website and at the front desk is in that currency.
Does easygym see card numbers?
No. The client enters the card on the Stripe page. easygym gets only the result of the payment, and for a saved card — Stripe’s reference to it and the masked number.
What does easygym do with the key?
It opens payment pages and checks their status, charges saved cards for auto-renewal with the client’s consent, refunds a payment when staff press “Refund”, and creates its own webhook. The key is stored encrypted and never shown; “Disconnect” deletes it from easygym, and revoking it in the Stripe Dashboard cuts easygym off at once.
Does the club need its own website?
No. Stripe asks for the business website in the account settings — give it the club website on easygym: it shows the plans with prices, the offer, the refund terms and contacts.
Can clients pay with Apple Pay or Google Pay?
Yes, on the Stripe payment page — when the wallets are turned on in the Stripe payment method settings and the client’s phone and browser support them.
Can we use a Stripe card reader?
No: easygym does not connect Stripe card readers (Stripe Terminal). Card payments at the front desk go through the QR code — it needs no hardware and works in every country where the club has a Stripe account.
How to take card payments through Stripe · easygym