Help Guides / Payments
Payments

Selling memberships on your own website

Paste one snippet and visitors pick a plan, sign your agreements and pay by card or e-transfer — recorded in DojoMesh like any other payment.

10 minutes Updated

Online Checkout lets someone on your own website pick a plan, sign your agreements and pay — by card through the Stripe or Square account you connected to DojoMesh, or by Interac e-transfer — and it lands in DojoMesh exactly as if you had recorded the payment yourself. One snippet to paste; nothing to keep in sync.

What it does

Your plans already live in DojoMesh. Online Checkout shows them on your website and adds the missing step: paying. When a visitor pays, DojoMesh:

  • finds the member by email, or creates them if they are new;
  • records one payment per student, with tax, on their profile and in your reports;
  • extends the membership (or adds punch classes, or records a drop-in) and sets their plan;
  • makes a brand-new person who bought a membership Active, and leaves drop-in and day-pass buyers as leads;
  • emails the payer a receipt and emails you an alert.

It is built for academies with a website you host somewhere else. If you use the DojoMesh landing page, your Pricing section can link to the same checkout — see Or link to a plan.

1

Check you are ready

Open Settings Online Checkout. The Ready to sell? panel checks the four things a checkout needs:

  • Card payments — your Stripe or Square keys are entered and that method is enabled. See Connect Stripe or Connect Square. A Test mode badge means your keys are test keys; real cards will not work until you paste live ones.
  • Interac e-transfer — optional. If Interac is enabled with an e-transfer email in Gym Settings, visitors also get a "reserve now, pay by e-transfer" option.
  • Plans shown on the website — only plans with Show on website ticked in Membership Plans are offered, and a plan needs a price to be sellable. Monthly plans sell one period at a time; drop-ins and day passes sell as single visits; punch cards add their classes.
  • Agreements — the waivers you show on signup are signed at checkout by every new student.
Tidy your plan names first

The widget prints each plan's name and its price separately, so a name like "Adult $150 Standard" shows the price twice. Give plans a clean name and put the details in the description.

2

Paste the snippet

Copy the two lines under Paste this on your website and put them wherever your pricing should appear. It looks like this, with your own academy address:

<div data-dojomesh-checkout></div>
<script src="https://your-academy.dojomesh.com/platform/checkout_embed.js" async></script>

Where to paste it:

  • WordPress — add a Custom HTML block.
  • Squarespace — add a Code block.
  • Wix — add an Embed HTML element.
  • A hand-coded site — paste it into the page's HTML.

The options under the snippet change what it shows: cards or a row of buttons, the button text, a dark theme, and which plans to include. The Live preview on the same page is the real widget, so what you see there is what your visitors get.

Prices stay current on their own

The widget reads your plans every time the page loads (cached for five minutes). Change a price or add a plan in DojoMesh and your website follows. There is no key in the snippet and nothing a visitor could tamper with — the price is always decided by DojoMesh at the moment they pay.

3

Or link to a plan

If you would rather keep your own pricing design, skip the script and link your existing buttons straight to the checkout. The Or link straight to a plan box lists one address per plan:

https://your-academy.dojomesh.com/platform/checkout.php?plans=81

Put several ids in the address, separated by commas, to start the checkout with one student row per plan — handy for a "sign up two kids" button.

What the visitor sees

Choosing a plan opens a checkout page on your DojoMesh address. It uses your logo, the colours from Gym Settings and the fonts from your landing page, so it reads as part of your site. It has three short steps:

  1. Your details — the person paying: name, email, phone. As soon as the email looks right, the page shows "Receipt will be sent to …" so a typo is caught before any money moves.
  2. Who is this for? — two big choices, Just me or Someone else. Picking "Just me" means the visitor never types their name twice: their plan and date of birth are all that is asked. Picking "Someone else" adds a row per person — a parent adds each child with their own name, date of birth and plan. Plans are shown as tiles with the price and period, not a dropdown, so they are easy to compare. Each new student's agreements sit under their row, and one typed signature at the bottom signs them all.
  3. Payment — the running total with any family discount and tax, then the card form (or the e-transfer option). A bar at the bottom of the screen follows the visitor with the total and a Continue to payment button, so it is never out of sight while they read the agreements.

After paying they see a confirmation with the students, plans, total and transaction reference, and a receipt arrives by email. Card details go from their browser straight to Stripe or Square; DojoMesh never sees them.

Change the look in one place

The checkout follows Gym Settings automatically: your logo, primary colour, navigation-bar colours, borders and text colours, plus the heading and body fonts chosen in your landing-page editor. There is nothing to configure on the checkout itself. (The custom CSS box on the landing page is deliberately not applied to the payment page.)

Existing and new members

DojoMesh matches on the payer's email. If that email belongs to a member of your academy, the payment is recorded on them and their membership is extended from whichever is later — today or their current paid-through date — so paying early never loses days. If the email is new, a member record is created. Archived members are never matched; a new record is created and your alert says so.

New people are created as leads, then a new person who bought a membership plan is made Active immediately — they have done exactly what converting a lead means. Someone who only bought a drop-in or day pass stays a lead. Members who already exist keep whatever status they had.

Setup fees

A plan's setup fee is charged only to students who are new to your academy. The page shows every fee while the visitor types; if one turns out not to apply, the amount charged is simply lower than the amount shown — never higher.

Families

A parent enters their own details once, then adds each child as a student with their own plan, and pays once. DojoMesh creates the children under the parent as a family (the same structure as Manage Families), records one payment per child, and applies your family discount from Gym Settings when two or more memberships are bought together — drop-ins, passes and punch cards are never discounted.

In this version the discount counts the students in the checkout, not family members you already have on file. A parent adding a third child later gets the two-member rate on that checkout; you can adjust it on their profile.

Paying by e-transfer

When Interac is enabled, the visitor can choose Reserve now, pay by Interac e-transfer instead of a card. DojoMesh creates the member records straight away, gives them a short reference like CK-8F3A, and emails them your e-transfer address, the exact amount and that reference to put in the message. Nothing is recorded as paid yet.

When the transfer arrives, open Online Checkout, find it under Recent online checkouts (reservations sit at the top) and click Mark received. That runs exactly the same steps as a card payment — payments, membership dates, plan, waivers, status, receipt. A reservation not paid within 14 days expires on its own; Cancel releases it sooner. The people it created stay on your Leads page either way.

What lands in DojoMesh

WhereWhat
Member profile PaymentsOne payment per student, tax-inclusive, method stripe, square or etransfer, note "Online checkout #… – plan name", the gateway transaction id, and the paid-through date.
Member profilePlan set to what they bought; punch classes added for punch cards; status changed as described above.
Member profile WaiversEach agreement a new student accepted, with the signer's name, the version signed and the time.
ReportsThe payments count as membership revenue with their tax lines, like any other card payment.
Online Checkout pageEvery attempt, including declined cards and reservations, with its status.
Your emailAn alert for every payment or reservation, listing the students, plans, amounts and any new records, with links to the profiles.
"Needs review" means the money was taken

Very rarely a card is charged but DojoMesh cannot finish updating the records. When that happens the checkout shows Needs review, the payment is still written to the payer's profile marked needs review, and you get an alert with a red header. Check the profile, tidy anything missing, and the money is never lost.

Limits and safety

  • One-off payments only. A monthly plan is sold one period at a time. Ongoing auto-billing is set up afterwards from the member's profile, as today.
  • Cards that require a bank confirmation step (3-D Secure, common in Europe and the UK) are declined with a clear message rather than charged. Most Canadian and US cards do not require it.
  • Up to six students per checkout, and a total of at most $10,000.
  • New members cannot log in to the member portal yet — no password is set. Set one from their profile if they need portal access.
  • Spam protection is the same as your signup form: hidden fields, timing checks, per-address limits, and Lead Shield scoring on new records. Repeated declined cards from one address are blocked for 15 minutes.
  • The checkout page cannot be embedded inside another site's frame, and nothing about a member is ever revealed to a visitor — not even whether an email is already on file.
  • If Stripe emails its own receipts, the payer receives two: Stripe's and DojoMesh's. Turn Stripe's off in your Stripe dashboard if you prefer one.

Styling the widget

The widget uses your site's font and comes with a neutral look, and every part of it has a fixed name you can target from your own stylesheet. Nothing you write here can affect prices — styling is purely visual.

SelectorWhat it targets
#dmck-plan-81One specific plan, by its id. The Online Checkout page lists the id next to each plan.
.dmck-kind-membershipEvery monthly plan. Also .dmck-kind-one_time (drop-ins, day passes) and .dmck-kind-punch (punch cards).
.dmck-cardA plan card. Inside it: .dmck-name, .dmck-desc, .dmck-price, .dmck-per (the "per month" text), .dmck-meta (the tax note), .dmck-btn (the button).
.dmck-grid / .dmck-listThe container in cards mode / buttons mode.
.dmck-title / .dmck-noteThe heading above the list and the small note below it.

For example, to match the buttons to your brand colour, highlight one plan and hide the tax note:

.dmck-btn { background: #0b5ed7; }
#dmck-plan-86 { border: 2px solid #0b5ed7; box-shadow: 0 6px 20px rgba(11,94,215,.15); }
#dmck-plan-86 .dmck-name::after { content: " — most popular"; color: #0b5ed7; }
.dmck-meta { display: none; }
Put your rules after the snippet, or make them more specific

The widget injects its own small stylesheet when it loads. Your rules win if they come later in the page or are more specific — .dmck .dmck-btn beats .dmck-btn. If you embed the widget twice on one page, the plan ids repeat; style them through the surrounding element instead, e.g. #kids-section .dmck-card.

For developers

If your website already runs on a server and you use the DojoMesh API, two actions let you collect the names and plans on your own pages and hand off only the payment. Both need a generated API key.

ActionWhat it does
create_checkout (POST)Send payer (first_name, last_name, email, phone), students (an array of first_name, last_name, birth_date, plan_id, is_payer) and an optional https return_url. Returns a url to send the visitor to, a checkout id and the quote. The link lasts 24 hours. Any plan of yours is allowed here, not only those shown on the website.
get_checkout (GET)Pass checkout. Returns the status (paid, pending_etransfer, failed, …), total, gateway reference, and for each student the member id, payment id and paid-through date.

A typical flow: your pay.php validates the form, calls create_checkout, and redirects to the returned url. When the visitor finishes, they are sent to your return_url with ?checkout=…&status=paid appended, and your page calls get_checkout to show the confirmation. Keep the key on your server, exactly as the API guide describes.

You do not need the API to use Online Checkout. The snippet and the plain links work with no key at all.

Stuck? Ask a person, not a bot.

DojoMesh is built and supported by an academy owner. If a step in this guide doesn't match what you see on screen, email, call or text, or ask for a Zoom call and Mark will walk you through it on screen.