Skip to Content
GuidesAccept Registration Payments

Accept Registration Payments

Connect your Stripe account to start collecting fees in minutes.

What You’ll Need

  • A Stripe account — Staty uses Stripe Connect to process payments. Create a free account at stripe.com  — no code required.
  • Admin access to Staty — You must be an admin of your Staty organization to connect a payment account.

How money flows: Staty uses Stripe Connect, so registration payments settle directly into your own Stripe account — Staty never holds your funds.

What It Costs

Staty is free to use — there are no monthly fees and no limits on leagues, tournaments, divisions, or admins. Staty only makes money when you do: a 1% platform fee is applied to the registration payments you collect.

  • Staty platform fee: 1% of each registration payment.
  • Stripe processing fee: Stripe’s standard 2.9% + $0.30 per transaction, billed by Stripe, applies separately.

If you don’t collect payments (free registrations or donation-only), Staty costs nothing.

Step-by-Step Setup

Step 1 — Create or log in to your Stripe account

If you don’t have a Stripe account yet, create one for free at stripe.com . Stripe has no monthly fee — it charges its standard per-transaction rate (2.9% + $0.30), and Staty adds a 1% platform fee on top (see What It Costs).

Step 2 — Connect Stripe in the Admin dashboard

  1. Open the Staty Admin dashboard 
  2. Go to Settings → Payments
  3. Click “Connect with Stripe”
  4. You’ll be redirected to Stripe to authorize the connection — review and approve
  5. On success, you’ll be redirected back to Staty with your account connected

Stripe will ask you to verify your identity and banking details if you haven’t done so already. This is required by financial regulations to enable payouts.

Step 3 — Create a Payment Product

A Payment Product defines the fee structure for a registration.

  1. In the Admin dashboard, go to Payment Products → New Product
  2. Enter a Name — e.g. “Spring League Team Fee”
  3. Set the Price
  4. Choose the billing type (see below)
  5. Save the product

You can create multiple products — one per league, or shared across leagues at the same price point.

Billing types

TypeWho paysNotes
Per teamThe team owner pays the whole fee once.Default when no per-player option is set.
Per playerPriced per player.Choose whether the team owner pays the lump sum for all players, or each player pays separately (their own checkout link).
FreeNo charge.The registration completes without payment.
DonationOptional, pay-what-you-want.Collected separately from registration fees and excluded from balance-due and capacity math.

Advanced pricing (optional)

Layer any of these onto the base price:

  • Early-bird pricing — a lower price charged before a deadline you set.
  • Late registration fee — a higher price charged on or after a start date (early-bird and late fee are mutually exclusive windows; the base price applies in between).
  • Multi-team (additional-team) discount — when the same person registers for more than one team, their additional teams are charged a reduced flat amount. This follows the person: the first team they pay for is full price, and each subsequent paid team gets the discount.

These are absolute price replacements (not percent-off). When more than one applies, the lower amount wins.

Step 4 — Attach the product to your registration

  1. Open your league in the Admin dashboard
  2. Go to Registration settings
  3. Under “Payment”, select your Payment Product from the dropdown
  4. Save and publish the registration

From this point on, teams or players will be charged automatically when they complete registration. Payment status is visible in the Admin dashboard under each registration submission.

How do I configure payment products for different divisions?

A Payment Product can be attached at several levels, and the most specific one wins: division → contest → tournament → registration. To set a different price for a specific division, open the Structure tab, open that division’s (or contest’s/tournament’s) ⋯ → Payment menu, and pick or create a product (“Use This Payment”). A division with its own product overrides the one inherited from its contest, tournament, or registration. Manage the product catalog itself under Pricing (Payment Products, /admin/payment-products).

How do I mark a team as “paid” if they paid manually?

For money collected outside Stripe (cash, check), open the team’s page (/admin/team/:id), tick Has Paid, enter the Custom Paid Amount ($), and add a Paid Note (required — Staty records which admin entered it). The team then counts as paid for capacity and status. This custom amount also shows on the registration page’s payment status.

Where can I see the transaction history for my league?

Open the Payments tab (sidebar → Financial → Payments, at /admin/transactions). The Transactions page lists all payments and donations, shows amounts and refund status, and has an Export button for a CSV of transactions. Refund individual payments (full or partial) from the row’s Refund button.

Discount Codes

Give registrants a fixed amount off with a code they enter at the payment step.

Create codes from the registration admin page (Registrations → open your registration → Discount Codes): set the code (e.g. SUMMER10), the amount off, and optionally a maximum number of uses and an expiration date. Codes can be toggled inactive or deleted at any time.

How the discount applies:

  • On per-player pricing, the amount comes off each player’s fee; on per-team pricing it comes off the team fee once.
  • It combines with early-bird / late-registration / multi-team pricing — the code subtracts from whatever those rules resolve to.
  • The amount is locked in when the code is applied, so editing or deleting a code later doesn’t change what an already-applied team owes.
  • If the discount covers the full amount, no payment is needed — the registration completes like a free one and immediately holds its capacity spot.
  • A use only counts toward the code’s limit when a discounted payment actually completes (or a fully-discounted registration finishes) — abandoned checkouts don’t consume uses. One code per team.

Registrants see a “Have a discount code?” box on the payment page — entering a valid code updates the total on the spot (codes are not case-sensitive).

Refunds

Need to return money to a team or player? You can issue a full or partial refund from the Admin dashboard — either per team (Registrations → Refund Team) or per payment (Transactions → Refund). Note that Staty does not email the registrant about a refund; a Stripe email is sent only if you enable it in your Stripe Dashboard.

See the full walkthrough in Issue Refunds.

Test Mode

Every registration has a Test Mode toggle so you can rehearse the full payment flow without moving real money. It’s a single switch on the registration (set in the create-registration wizard, or from the toggle on the registration admin page) — not a property of the payment product.

When Test Mode is on:

  • Payments run through Stripe’s test environment — use a test card such as 4242 4242 4242 4242 (any future expiry, any CVC). No real charges occur.
  • Teams, players, and payments created while testing are stamped as test data and are hidden from your public competition pages, so they never mix with real registrations. Test pages show a TEST MODE tag.
  • Game scheduling is disabled while a registration is in test mode.

Turn Test Mode off before sharing the registration link publicly to start accepting real payments.

Test Mode is set per registration and read directly from that registration — it does not inherit from a division, league, or tournament.

Next Steps

Last updated on