Hosting is currently gated to an allowlist while we actively test for bugs before rolling it out to everyone. Message karl@offkai.app for access to hosting.

Hosting guide

How to host on Offkai

About 5 minutes to read.

If anything's unclear or broken, email karl@offkai.app.

On this page

Before your event

Set up your profile

Profile β†’ add your preferred name (what attendees see at the door) and at least one payment method β€” Venmo, Zelle, PayPal, Wise, Cash, or Other (GCash, Revolut, PayPay, etc.).

You need at least one payment method saved before you can pick which methods an event accepts.

Planning polls

Not sure of a date yet? Poll your community before committing to an event. Create one at Host β†’ Polls β†’ New poll: title, description, optional cover image (same uploader as event covers, drag to reposition), timezone (candidate dates display in this timezone for every voter), optional close date, up to 20 candidate dates, and up to 5 optional questions (single-choice or multi-choice β€” e.g. venue or budget), each with up to 12 options.

A Public poll toggle lists it on Discover (it renders as a card badged "Poll" alongside events). Unlisted polls are reachable only by the share link, and viewers must sign in to see them β€” they're not browsable or readable anonymously.

Anyone with an Offkai account marks each candidate date Yes / Maybe / No, answers your questions, and can update their answers anytime while the poll is open. A voter can tick "Notify me if this becomes an event."

If timing is flexible, switch the poll to Schedule Heatmap instead: you pick candidate days plus a daily time window, and voters paint the 30-minute slots they can make. Results render as a density grid β€” click the busiest cell to convert with that exact day and time. Narrowing the time window later removes any painted votes that fall outside it.

Your poll's manage page shows live results β€” per-date Yes/Maybe tallies with a top pick, per-option counts β€” plus a voter list, so you can see who's voted (like an interested list; individual answers stay aggregated).

While the poll is open, you get at most one email digest a day summarizing responses β€” and only when there are new votes since the last one.

Close it manually anytime, or let it close automatically at the close date; it can be reopened. Closing freezes voting and makes results publicly visible on the poll page.

Convert to event from the manage page (or any date's "Convert with this date" link in the results) lands you on the normal create-event form, pre-filled with the winning date, title, description, timezone, and cover image. Publish as usual, or save as a draft β€” the notifications below wait until the draft is published.

Everyone who ticked "Notify me" gets an in-app notification and an email summarizing the new event (name, date & time, location, price) with an RSVP link, and is automatically added to the event as Interested β€” they'll show up in the event's interested list and get the usual interested-flow notifications from there.

After conversion, the poll's share link automatically forwards to the event page, so links you already shared keep working.

Polls are free and don't require Stripe. Full walkthrough (including what happens if you delete a converted event): Planning polls on Offkai.

Create an event

Host β†’ + Create. Key fields:

  • Title, description, location, date/time β€” set a Start and End (15 minutes to 24 hours apart); enter an address or map coordinates and the form shows a live map preview. When you create an event, it only has to finish later than now β€” an event already underway is fine; editing later skips this check.
  • Description supports markdown: **bold**, *italic*, - bullet, [link](url).
  • Capacity β€” total seats, with optional per-tier caps.
  • Price & currency β€” pick a currency, set a price, or mark Free. Add ticket tiers for named price levels (General, VIP, Early bird…), each with its own price, optional capacity, and an optional Hidden flag revealed by a promo code.
  • Accepted payment methods β€” from your saved profile methods. Card (Stripe) appears once Stripe is connected on your Profile.
  • Charge after the event β€” for flat-cost venues (a karaoke room, a rented space), tick this under How to pay; the price field becomes the total cost and attendees split it once attendance is known (see Billing after the event).
  • Check-in mode β€” QR ticket, Roster, or No check-in (see Check-in).
  • Visibility β€” list on Discover, show/hide the attendee list, or gate the event behind a password.

Save β†’ you land on the event's hosting hub.

RSVP questions

In the event form, add up to 8 questions attendees answer when they RSVP β€” cosplay character, oshi, dietary needs, merch size, and so on.

  • Answer types: Short answer, Paragraph, Single choice, or Multi-choice (up to 10 options each). Mark any question Required and attendees can't complete their RSVP without answering it.
  • Asked on every way of getting a spot β€” a normal RSVP (any payment method, including card), switching from Interested to a confirmed RSVP, joining the waitlist, or claiming a waitlist offer (only if skipped when joining). Fundraiser donations and additional-ticket purchases don't ask them, and fundraiser events don't offer this section.
  • Answers save with the RSVP together with the questions as they were worded at the time β€” editing your questions later never changes what an earlier answer meant.
  • Attendees can review and edit their answers from their ticket page (/my-rsvps); hosts can't edit an attendee's answers.
  • You see answers in each guest's detail sheet on the Guests page, and the CSV export adds one column per question (multi-choice answers joined with β€œ; ”).

Promo codes

Manage from your event page β†’ Promo codes. A code can reveal hidden tiers/add-ons and/or apply a percent or fixed discount, with an optional redemption cap (one use per attendee).

Seats, add-on units, and redemptions are protected against double-booking β€” if two people go for the last one at the same moment, only one of them gets it, never both.

Fundraisers

Pick Fundraiser instead of Standard event to collect donations toward a goal instead of selling seats β€” live progress bar, public donor wall, optional anonymous giving.

Requires Stripe connected and verified to publish (identity verification, and it's what enables anonymous donations) β€” you can save the fundraiser as a draft while verification finishes.

Each donation option (one row per cause or set amount) or add-on doubles as a fundraising bucket with its own goal and a short β€œwhat this funds” label β€” or turn on "Let donors choose how much to give" for a single name-your-amount option with no tiers. Hosts can also record an offline donation β€” their own contribution, or funds collected outside Offkai β€” from the event dashboard's Record a donation action; these count as verified right away and appear on the donor wall. Add up to 5 stretch goals per bucket β€” bigger targets stacked on the goal that show as milestone markers on the progress bar and can be revealed to donors one at a time.

Group buys

Pick Group buy instead of Standard event to sell items instead of seats β€” merch, snacks, group orders, anything attendees pick and pay for rather than RSVP to. Each item has a name, price, optional photo, and an optional Stock cap, plus an optional max per order. The event's overall capacity field is relabeled Max orders for group buys β€” it caps total checkouts, not any one item. Attendees choose Shipping and/or Pickup at checkout β€” turn on at least one, and set a flat shipping fee if you charge for it β€” plus an optional tax rate on the order total.

Co-hosts & roles

Invite by email or @username from Host β†’ your event β†’ Co-hosts. Invites are two-step β€” the person must accept before they can act on the event. Two roles:

  • Editor β€” full access, including cancelling a live event, except changing payout setup. (Deleting a still-in-draft event is organizer-only.)
  • Scanner β€” door-only: look up the guest list and check people in.

Blocking someone

Events β€” the organizer or an editor co-host manages this from the event's Manage section β†’ Blocklist (works on drafts too). Block by @username or email; a blocked person can't see the event, RSVP, join the waitlist, or buy a ticket. Blocking auto-cancels their interested, waitlisted, or pending-offer spot β€” a paid or confirmed RSVP isn't touched, so cancel or refund it yourself from the guest list. Co-hosts can't be blocked. An email with no account yet starts matching as soon as that address signs up.

Arigathanks boards β€” the owner or a board moderator manages it from the board's settings or moderation page. Blocked people can't open or post on the board; their existing posts are hidden (you can unhide them later).

Scheduling, drafts & sharing

  • Set RSVPs open at / close at to run a timed drop.
  • Save as draft keeps an event private (no Discover listing, no public link) until you Publish.
  • Duplicate (on the event page, or in the row on My Events) opens a new draft prefilled from an existing event β€” description, location, pricing, tiers, add-ons, payment methods, cover and settings all carry over; the date, RSVPs, promo codes, co-hosts and password gate don't. It works on past events too, so a monthly night is Duplicate β†’ set the date β†’ Publish.
  • Copy share link on the event page gives you a link like offkai.app/event/your-event-title-ab12cd β€” no login needed to view, login needed to RSVP.

Running your event

Running your event

Your event page shows live status and revenue tiles, plus a Manage section for the guest list, walk-ins, and the payments queue. Every paid RSVP needs your approval before the ticket goes out β€” cash and digital screenshots both land on the Payments page; Card (Stripe) auto-verifies.

Message attendees anytime with Broadcast (pick confirmed / pending / interested / everyone), or draw random winners with Pick winners. Insights gives an at-a-glance read on RSVPs, revenue, and add-on sales.

Need to bill a vendor, collect a deposit, or hand someone a paper record? Host β†’ Invoices (or Invoices on the event page, pre-filled with its name and currency) opens a lightweight generator β€” pick Invoice, Bill, or Receipt, fill in line items, tax, and payment terms, then print or save it as a PDF. Nothing is saved on our servers, so keep your own copy.

Check-in

Picked per event, changeable later from the edit form:

  • QR ticket β€” attendees get a QR in their confirmation email. Scan it with your phone's camera through the web scanner (Host β†’ Scan QR codes at the door) β€” no app to install.
  • Roster β€” tap names off a guest list at the door. The list loads once, but each check-in tap needs a connection (unlike QR mode, which queues scans offline).
  • No check-in β€” attendees just show up; you see a headcount.

See Your tickets & QR code for what attendees see at the door.

Waitlist

When a capped event fills up, new sign-ups queue on the Waitlist. Send offers manually, or turn on Auto-promote to fill open seats as they free up. Under Auto-promote, set the Offer window (hours) β€” how long a promoted attendee has to claim and pay (1–168 hours, default 24) before the seat rolls to the next person.

Need to stop new RSVPs without cancelling? Turn on Pause RSVPs β€” the page stays up and existing seats are held, but the RSVP button is disabled until you resume.

See When you can't RSVP right away for the attendee's view of waitlists, presales, and full events.

Emails & notifications

Attendees get automatic emails at each step β€” confirmation code, RSVP/ticket confirmation with QR, payment reminders, waitlist offers, β€œspot opened” nudges, cancellation and refund notices, and more β€” triggered by the state change itself, not something you send. You trigger a couple yourself: Broadcast messages, and a notice when you change the check-in mode on an event that already has confirmed attendees.

Changing the date, time, or venue of a live event emails everyone with a live RSVP β€” confirmed, pending payment, waitlisted, interested, and guests you added by hand β€” showing the old and new details, and posts an in-app notification. Title, description, and price edits only post the notification. The edit form asks first, and lets you post only the in-app notification instead of emailing.

Every attendee also gets a matching in-app notification β€” the bell icon and unread badge in the nav, with full history at /notifications. It's a reliable backup: if an email bounces, lands in spam, or they've unsubscribed from your broadcasts, the notification still lands.

Unsubscribe is per event and only applies to Broadcast messages β€” it doesn't stop tickets, receipts, payment reminders, or cancellation notices for that event, and it doesn't carry over to any other event they've RSVP'd to.

See Email notifications & unsubscribing for the attendee's view.

Changes & cancellations

Cancellations & refunds

Cancel a single RSVP from the guest list, or the whole event from the event page β€” both email affected attendees. For Card (Stripe), refunds (full or partial, itemized by ticket/add-on) run through Offkai directly. Your event's cancellation policy (Flexible, Standard, Non-refundable, or Custom) sets whether attendees can self-serve a refund and by when.

Refunds return the ticket's face value only β€” Offkai's $0.35 platform fee and Stripe's processing fee are not refunded, matching Eventbrite/Ticketmaster norms.

See Cancel your RSVP & get a refund for the attendee's side of cancelling.

Adjusting a confirmed RSVP

Adjust order (on the Payments or Guests page) edits a confirmed RSVP's add-ons or guest count without cancelling. If the change raises the total on a Stripe RSVP, the attendee gets a "Pay $X now" link for the difference β€” or tick "Don't email or charge" to make it a silent correction. Every change is logged on the attendee's order history.

Billing after the event (cost split)

For flat-cost venues β€” a karaoke room, a rented bar space β€” the per-person price depends on how many people show up. Tick Charge attendees after the event has concluded under How to pay when you create the event, and enter the total cost of the event instead of a ticket price (plus an optional minimum headcount for the estimate).

  • Before the event attendees RSVP without paying. They pick how they'll pay later (card, PayPal, cash…) and the event page shows a live estimate β€” the total divided by everyone going.
  • After the event open Payments β†’ Finalize the split. Tick who actually attended (Roster and QR check-ins are pre-ticked; No check-in events pre-tick everyone), and the app divides the total by that headcount, rounded up to the nearest cent. Pick a due date (3, 7 or 14 days) and finalize. We'll also email you a reminder the morning after the event if you haven't finalized yet.
  • Every billed attendee gets an email and a notification with their exact share and pays through the event's normal methods: card settles instantly, screenshot methods and cash land in your Payments queue as usual, and paid rows read "Paid β€” thanks for attending".
  • Missed someone? "Bill at $12.50" adds them at the frozen share. Someone who didn't come? Waive bill. Until the first payment lands you can Undo the whole finalize and redo the checklist.

Ticket tiers, add-ons, promo codes and waitlists aren't available on these events (a full event simply closes). Attendees can't cancel a bill themselves β€” they contact you and you waive it. The rounding overage (a few cents at most) stays with you.

Fees & payment terms

Fees and payment terms

Ticket typePlatform fee
Paid (Stripe)~$0.35 USD equivalent per ticket
FreeNo fee
Cash / Venmo / Zelle / PayPal / WiseNo platform fee
Post-event billing (cost split)Same as above per share: no fee for cash/manual, the paid-Stripe fee for shares paid by card

For Venmo, Zelle, PayPal, and other manual methods, attendees pay you directly β€” Offkai never touches that money. To make verification faster than digging through your own payment history, attendees upload a screenshot instead of you searching for a match; those (and all cash RSVPs) need your approval on the Payments page before the QR ticket goes out.

No subscriptions or setup costs β€” you only pay per paid Stripe ticket. Stripe's own processing fees apply on top (independent of Offkai; see stripe.com/pricing) β€” you choose per event to pass them through to attendees or absorb them. Both fee types are non-refundable once a ticket sells. You're responsible for any sales tax/VAT in your jurisdiction.

Full legal-shape detail (merchant of record, chargebacks, statement descriptor): How payments work on Offkai. What attendees see: Fees & your local currency.

Beyond events

Arigathanks Boards

A standalone kudos wall, independent of any event β€” Host β†’ Arigathanks boards β†’ New board. Anyone with the link can post a photo, GIF, or note; you control visibility (public or password-gated) and can hide individual posts.

Free for 10 posts; upgrade to 20 ($2.99) or unlimited ($4.99) as a one-time charge.

Pick a Desktop layout β€” Standard (banner and description scroll away with the wall) or Sidebar (they stay pinned beside it); phones and tablets always stack. Plus and Unlimited boards can also download a Keepsake PDF β€” a printable poster of the wall.

See Creating an Arigathanks Board for a deeper walkthrough.

Wrapping up

After the event

Nothing forced β€” events stay on your dashboard with a checked-in/capacity snapshot. Payment screenshots auto-delete 30 days after the event for attendee privacy.

Common questions

An attendee didn't get their confirmation code.

Check spam, then use Resend code on the verify screen. Codes expire after 1 hour.

An attendee paid via a method I don't have set up.

Edit the event β†’ uncheck the missing method, add the right one in your Profile, edit again to enable it. The attendee can then send a screenshot via that method.

Why won't it let me create an event in the past?

When you create an event, it only has to finish later than now β€” so you can still set up something that's already underway. If it has, you'll see "This event's date has already passed. Double-check the date and year." Editing an existing event doesn't re-check this, so a concluded event can still be edited in place, for example to fix the description afterwards.

I want to test cash and digital flows on the same event.

Tick both methods on event creation. Each attendee picks one when they RSVP.

I added a co-host but they can't see the event.

They need to accept the invite from their Invitations page first.

Which check-in mode should I pick?

QR ticket for a scan-and-go door; Roster if the door host knows attendees by sight or the venue has poor reception; No check-in for casual free meetups.

Can I change the check-in mode after attendees already have tickets?

Yes, from the edit form at any time. If the event has any confirmed attendees and the change involves QR mode (switching to or from it), you're asked whether to notify them. The default choice is to email everyone their new ticket now if the event is within 14 days; further out, it defaults to skipping (deferred to your next reminder).

Two people go for the last seat (or the last use of a promo code) at the same instant β€” what happens?

Limits are applied when a booking is confirmed, not when checkout starts. Only one of them gets it β€” never both; the other sees a "sold out" or "code limit reached" message. A started-but-unpaid checkout doesn't hold the slot.

I made a data-entry mistake on a guest's order β€” can I fix it without bothering them?

Yes β€” open Adjust order and tick "Don't email or charge" before saving. The fix is recorded in the audit log only; no email or payment link goes out.

An attendee has a paid top-up on their order β€” why won't Refund work?

Multi-charge refunds aren't supported yet. Refund the top-up charge separately in the Stripe Dashboard first, then use Offkai's Refund button for the original charge.

Fundraisers

How does the donor wall, progress bar, and anonymous giving work?

Each bucket with a goal gets a progress bar filled in green, with pending donations shown in grey. Click "+ Add stretch goal" under a goal (up to 5 per bucket, even after launch) and each goal becomes a round marker on the bar with its cumulative target underneath; reached markers turn solid green with a check; once the main goal is met, money going into the next stretch goal shows in orange until that goal is reached and turns green. A small label reads "60% of goal" while the main goal fills, then "Next: Bigger banner", then "All goals met", and a milestone ladder lists the main goal and each stretch, showing "$50.00 to go" on the current one. Once a bucket has 2+ stretch goals you can turn on "Reveal stretch goals one at a time": later goals stay hidden on the event page and donor board (shown as "? ? ?") until the one before is reached, while you always see every goal on your event dashboard. "Stop accepting at goal" stops donations at the final goal (the main goal plus every stretch, including hidden ones). Turn on "Show goal progress" to show the bars on the projected donor board (off by default; the total raised always shows). The donor wall lists every verified donation with name, amount, and an optional message β€” donors can give anonymously if paying by Card, and you can hide an inappropriate message without removing the donation. See Donate to a fundraiser for the donor's view.

How does the milestone ladder show up, and when does 'Show goal progress' appear?

On the event page the ladder starts collapsed into a one-line summary row showing the current goal and what's left β€” e.g. "Bigger banner Β· $50.00 to go" β€” with a "3 goals" count on the right. Donors click it to expand the full ladder. It opens automatically when exactly one bucket on the event has stretch goals. On the projected donor board the ladder is always fully shown (there's nothing to click on a projector) and goal bars stack in a single column. The "Show goal progress" toggle on the event dashboard (next to "Hide amounts" / "Hide names") only appears once at least one donation option or add-on has a goal β€” with no goals there's nothing to show.

What happens to my stretch goals if I clear a bucket's goal?

The editor keeps the stretch rows but greys them out with the notice "Set a goal above 0 to keep your N stretch goals". Set the goal again before saving to keep them; save without a goal and they're removed, because stretch goals can't exist without a main goal. You can still delete individual stretch rows while in that state.

Are hidden stretch goals secret?

No. "Reveal stretch goals one at a time" is a display setting that hides later goals from the event page and donor board, not a secret β€” anyone who knows where to look can see the full list of goals for a public event. Don't put anything confidential in a stretch goal label. Hidden goals still count toward "Stop accepting at goal".

Can a capped bucket go over its goal?

Slightly, yes. "Stop accepting at goal" looks at how much has been confirmed at the moment someone donates. Two donations landing at the same instant can both get through, and donations that were still pending (for example, awaiting your approval) when the goal was hit will still verify afterwards. So a capped bucket can end a little over its goal; the overshoot is kept, not refunded. This differs from seats and promo codes, which only ever let one person through (see "Two people go for the last seat…" above).

Are fundraiser donations tax-deductible?

No β€” Offkai is a platform, not a registered charity. Receipts are payment receipts, not charitable tax receipts. If you're running a genuine charitable drive, handle tax documentation yourself.

Group buys

How do fulfillment and promo codes work on a group buy?

Attendees pick Shipping (to the address they enter) or Pickup (show their QR at pickup) per order. Promo code discounts apply to the goods subtotal only β€” not shipping or tax. See Order from a group buy for the buyer's view.

Promo codes & Insights

Can one promo code both reveal a hidden tier and apply a discount?

Yes β€” a single code can unlock hidden tiers/add-ons and apply a percent or fixed discount at the same time. Each attendee can redeem a given code once; "Max redemptions" caps total uses across everyone.

What exactly does Insights show me?

RSVPs and revenue over time, a status breakdown (confirmed / pending / waitlisted / interested), your payment-method split, add-on sales, refunds, and capacity used β€” useful for catching a slow week early or seeing which add-on is carrying the event.

Fees & refunds

Can I bill people after the event instead of up front?

Yes β€” see Billing after the event. The total is split by whoever attended, rounded up to the cent; the overage stays with you, and attendees pay through the same methods as any other event.

What will attendees see on their card or bank statement?

Your Stripe account's statement descriptor, with * Offkai App appended β€” e.g. JOHN DOE EVENTS* OFFKAI APP. Change your descriptor in the Stripe dashboard (Settings β†’ Public details) if you'd rather show your event brand than your legal name.

Exactly what do I get back on a refund?

Just the ticket's face value. On a $20 ticket at the default 0% buffer, an attendee pays $21.27 total ($20.00 face + $0.35 platform fee + $0.92 Stripe processing). A refund returns the $20.00 face value; Stripe's processing fee isn't returned, and Offkai keeps its $0.35 platform fee.

What's the difference between the cancellation policies?

Flexible refunds up to 7 days before the event; Standard (the default) does the same with a 48-hour window; Non-refundable blocks attendee self-cancel (you can still issue manual refunds); Custom lets you write your own terms, and attendees are routed to message you instead of self-serving.

Formatting & boards

What markdown formatting can I use in my event description?

**bold**, *italic*, - bullet / 1. numbered lists, [link](url), ### headings, and > blockquotes. Plain text works too β€” markdown is layered on top, not required.

Can I moderate or remove a post from my Arigathanks board?

Yes β€” open the board's wall or management page and click Hide on any post. Hidden posts stay attached to the board (for your records, or to unhide later) but drop off the public wall. See Creating an Arigathanks Board.

Adjusting orders

How does an attendee actually pay for an add-on I tack on after they've RSVP'd?

If it's a Stripe RSVP, saving the change (with "Don't email or charge" unchecked) creates a Checkout Session for just the difference and emails them a "Pay $X now" button β€” the same link also shows as a Payment due banner on their /my-rsvps page. Non-Stripe rails (cash, Venmo, Zelle, PayPal, Wise) just get a notification email; you collect the difference yourself.

More

My event isn't showing on Discover even though I turned it on.

Discover requires a minimum combined count of going/pending-payment attendees plus interested ones (currently 10) before it appears β€” a quality bar so the catalog doesn't look empty.

Where do I report a bug?

Email karl@offkai.app with the event ID (from the URL) and what you saw.