Payment Architecture
for OneSummer
A complete technical and strategic blueprint for the payment infrastructure powering OneSummer — the Common App for summer camps. Covers the marketplace payment model, processor selection, money flow, camp monetization, tax obligations, and camp-facing pricing.
Strategic Overview
OneSummer is free for parents — always. This is a deliberate strategic choice: eliminating friction on the demand side maximizes application volume, which is the core value proposition the platform sells to camps. Monetization lives entirely on the supply side (camps) and within the transaction itself.
The fundamental architectural implication of this model is that OneSummer must function as a payment marketplace, not a simple payment processor. Money flows from parent to platform and then from platform to camp. This two-sided flow requires infrastructure built specifically for marketplace payouts — most notably Stripe Connect or an equivalent.
A simple payment integration (e.g., Stripe Checkout on a SaaS product) collects money into one account and stops. A marketplace integration must collect funds, hold them, calculate splits, route the platform's cut to its own account, and route the camp's net proceeds to the camp's connected bank account — all in compliance with financial regulations for money transmission. This distinction drives every architectural decision in this document.
Core Principles
- Free for parents, forever. No paywall, no subscription, no hidden fee on the parent booking flow beyond the disclosed booking convenience fee.
- Camps are the merchants of record. The camp sets the tuition price. OneSummer facilitates but does not own the transaction.
- Platform takes a cut before camps are paid. The take rate is deducted at the time of payout — camps see net proceeds, not gross.
- Refund policy is camp-defined, not platform-defined. OneSummer enforces the camp's stated policy; the platform does not absorb refund risk.
Revenue Model
OneSummer has four near-term revenue streams, with two additional future streams. All streams are camp-side or transaction-side — never parent-side in a way that increases the cost of applying.
Unit Economics at Scale
At a hypothetical 10,000 bookings per season with average tuition of $2,000 and a 12% take rate:
Stripe Connect charges ~2.9% + $0.30 per transaction for card processing. On a $2,000 tuition, that is ~$58.30. This is in addition to the platform take rate and must be factored into camp-facing economics. The platform can absorb Stripe fees or pass them through — this is a product decision to be made before launch. Recommendation: absorb them at the 12–15% take rate tier (effectively net take rate is ~9–12%), or clearly disclose as a separate line item.
Revenue Stream Maturity
| Stream | Type | Who Pays | Launch Priority | Infrastructure Required |
|---|---|---|---|---|
| Marketplace take rate | Transaction fee | Camp (deducted from payout) | Day 1 | Stripe Connect, split payments |
| Parent booking fee | Convenience fee | Parent (charged at apply) | Day 1 | Stripe Checkout, separate charge |
| Featured listings | SaaS subscription | Camp | Month 3 | Stripe Billing, camp dashboard |
| Premium profiles | SaaS subscription | Camp | Month 3 | Stripe Billing, feature flags |
| BNPL for parents | Financing (future) | Parent / lender | Season 2 | Affirm/Klarna partner integration |
| Early payout for camps | Float / financing | Camp (fee for instant payout) | Season 2 | Stripe Instant Payouts or banking partner |
Marketplace Payment Model
The defining capability of the OneSummer payment stack is split payments with connected accounts. Unlike a standard merchant accepting payment for its own goods, OneSummer must accept payment on behalf of third-party merchants (camps) and route net proceeds to them after deducting the platform fee.
Why Standard Stripe Checkout Is Insufficient
A standard Stripe integration would collect 100% of tuition into OneSummer's bank account, then require the platform to manually wire or ACH money to each camp. This is:
- Operationally unsustainable at scale (manual reconciliation for every camp payout).
- A potential money transmitter liability (holding funds on behalf of third parties without a money transmitter license in many states).
- A trust problem for camps (no programmatic guarantee of payout timing).
Platforms that collect and hold funds on behalf of third-party merchants can be classified as money transmitters in the US, which requires a license in each state (there are 50+ licensing regimes). Using Stripe Connect's "platform" model shifts this liability to Stripe, which holds the appropriate licenses. Do not build a custom payout system without legal review.
Required Capabilities
- Accept cards (Visa, MC, Amex, Discover)
- ACH / bank transfer for large tuitions
- Saved payment methods (cards on file for installments)
- 3D Secure / SCA compliance
- Apple Pay / Google Pay support
- Split the gross charge at source
- Route camp net to connected account
- Route platform fee to OneSummer account
- Hold in escrow until session confirmed (optional)
- Programmable payout schedules per camp
- KYC (Know Your Customer) identity verification
- Business entity verification (EIN / LLC / 501c3)
- Bank account connection (routing + account)
- Terms of Service acceptance
- Dashboard for camp payout history
- 1099-K generation and filing for camps over threshold
- Chargeback handling and dispute management
- Refund processing (full or partial)
- PCI DSS compliance (offloaded to processor)
- OFAC screening (handled by Stripe Connect)
Processor Recommendation
Three processors offer first-class marketplace / platform payment capabilities at the scale OneSummer needs for launch. The recommendation is Stripe Connect.
Use Stripe Connect with Express accounts for camps. Express is the right tier: Stripe handles the KYC/onboarding UI and compliance, camps get a Stripe-hosted dashboard for their payout history, and OneSummer retains full control over the charge and split logic. "Custom" accounts offer more control but require building onboarding UX from scratch. "Standard" accounts give camps too much autonomy over the payment flow. Express is the correct balance for a marketplace at this stage.
Stripe Connect Account Types
| Type | KYC Ownership | Payout Dashboard | Platform Control | Recommendation |
|---|---|---|---|---|
| Standard | Stripe + Camp | Full Stripe Dashboard | Low | Too autonomous |
| Express | Stripe (hosted UI) | Stripe Express Dashboard | High | Use This |
| Custom | Platform builds it | Build your own | Full | Phase 2 option |
Payment Flow Diagrams
Flow A — Standard Tuition Payment
The primary flow: a parent pays tuition for a confirmed camp session. Money moves from parent's card through Stripe's systems, with OneSummer's take rate deducted at source and net proceeds routed to the camp's connected account.
Card / Bank
Payment Intent
Platform Acct
Connected Acct
Bank Account
Flow B — Parent Booking Fee (Separate Charge)
The booking fee is charged to the parent as a separate, non-refundable convenience fee at the point of application submission. It is not routed to the camp — it goes directly to the OneSummer platform account.
Card
Payment Intent
Platform Acct
The $2.99–4.99 booking fee must be disclosed before the parent submits payment. It must appear as a clearly labeled line item on the checkout screen: "Application Processing Fee — $4.99 (non-refundable)." Burying this fee is a regulatory and trust risk.
Flow C — Full Session Application-to-Payout Timeline
$2.99–4.99) is charged immediately via Stripe. No tuition yet.application_fee_amount set to the platform take rate. Charge is captured immediately or on a deferred schedule per camp settings.application_fee_amount) to OneSummer's platform account, and routes remaining balance to the camp's connected Express account. Both happen atomically — no manual reconciliation needed.Flow D — Refund Flow
stripe.refunds.create()PaymentIntent. Stripe reverses the transfer to the camp's connected account automatically. Note: if funds have already been paid out to the camp's bank, the camp's Stripe balance goes negative and is recovered from future payouts.application_fee_amount is also reversed — OneSummer earns nothing on a fully refunded transaction. For partial refunds: the take rate is prorated. Parent booking fee is non-refundable regardless.Camp Onboarding & KYC
Before a camp can receive payouts, it must complete identity and business verification via Stripe Connect's onboarding flow. This is a regulatory requirement (Bank Secrecy Act / USA PATRIOT Act) and Stripe's own terms. OneSummer does not need to build this — Stripe provides a hosted onboarding link.
Onboarding Steps
stripe.accounts.create({ type: 'express' }). Stores the returned account_id on the camp record. This is a shell account — not yet active.stripe.accountLinks.create()) and redirects the camp admin to Stripe's hosted onboarding. Stripe collects: legal name, SSN/EIN, date of birth, business address, and bank account details. OneSummer never touches this data directly.account.updated webhook and marks the camp as "payout-enabled" once charges_enabled and payouts_enabled are both true.Many summer camps are registered nonprofits. Stripe Connect handles nonprofit entities — the EIN replaces the SSN and the onboarding flow adjusts accordingly. OneSummer should add a checkbox in the camp onboarding UI: "This camp is a registered 501(c)(3) nonprofit" to route them to the correct Stripe onboarding variant and to flag them for correct 1099 handling (nonprofits are generally exempt from 1099-K filing requirements).
KYC Requirements by Entity Type
| Entity Type | ID Required | Business Docs | 1099-K Applies? |
|---|---|---|---|
| Sole proprietor / individual | SSN + govt photo ID | None | Yes |
| LLC / S-Corp / C-Corp | EIN + beneficial owner SSN | Articles of incorporation | Yes |
| 501(c)(3) Nonprofit | EIN + officer ID | IRS determination letter | Exempt (generally) |
| Government / public school | EIN | Authorization letter | Exempt |
Take Rate Implementation
The take rate is implemented via Stripe Connect's application_fee_amount parameter on the PaymentIntent. This is the cleanest technical implementation: the fee is defined in cents at the time of charge creation, Stripe atomically routes it to the platform account, and it appears as a separate line item on Stripe's reporting dashboard.
Stripe API Implementation
const paymentIntent = await stripe.paymentIntents.create({ amount: 200000, // $2,000.00 in cents currency: 'usd', payment_method_types: ['card'], application_fee_amount: 24000, // $240.00 = 12% take rate transfer_data: { destination: 'acct_camp_connected_account_id', }, metadata: { camp_id: 'camp_abc123', application_id: 'app_xyz789', session: '2026-summer-wk2', take_rate_bps: 1200, // 12% = 1200 basis points } });
Take Rate Tiers
The take rate can vary by camp tier (linked to their listing subscription) and by volume. Higher-paying camps get a lower take rate as a negotiated incentive.
| Camp Tier | Take Rate | Effective at $2K Tuition | Rationale |
|---|---|---|---|
| Free Listing | 15% |
$300 platform / $1,700 camp | Default — no subscription offset |
| Listed | 12% |
$240 platform / $1,760 camp | Camp pays listing fee; rate offset |
| Featured | 10% |
$200 platform / $1,800 camp | Highest monthly fee; loyalty pricing |
Store the take rate as basis points (bps) on the camp database record: e.g., take_rate_bps: 1200 for 12%. Always compute the fee in cents from the gross amount using integer arithmetic to avoid floating-point errors. Example: Math.round(grossAmountCents * takeRateBps / 10000).
Parent Booking Fee
The parent booking fee is a separate, standalone charge that funds the platform for the cost of processing applications — regardless of whether the camp accepts the applicant. It is not a deposit on tuition. It is a non-refundable convenience and processing fee.
Pricing and Positioning
| Scenario | Fee | Notes |
|---|---|---|
| Single application | $4.99 |
Standard per-application fee |
| Second application (same session) | $3.99 |
Volume discount — encourages multi-camp applying |
| Third+ application (same session) | $2.99 |
Further discount — maximize GMV potential |
| Free tier rollout (Year 1) | $0 |
Consider waiving entirely in Year 1 to drive adoption. Revisit after 1,000 camps. |
UX Disclosure Requirements
The booking fee must be presented clearly at multiple points in the flow. Failure to disclose upfront is a regulatory and reputational risk (CFPB junk fee scrutiny, app store review policies).
- Camp detail page: Small disclosure: "Applications processed through OneSummer include a $4.99 processing fee."
- Application checkout screen: Explicit line item before payment confirmation — fee cannot be hidden in fine print.
- Email receipt: Both the booking fee and tuition (if charged simultaneously) itemized separately.
- Refund policy display: Explicitly state "Application processing fees are non-refundable."
Technical Implementation
The booking fee is a separate PaymentIntent with no transfer_data or application_fee_amount. It routes entirely to the OneSummer platform account.
const bookingFee = await stripe.paymentIntents.create({ amount: 499, // $4.99 in cents currency: 'usd', payment_method_types: ['card'], // No transfer_data — stays in platform account description: 'OneSummer Application Processing Fee', metadata: { fee_type: 'booking_fee', application_id: 'app_xyz789', camp_id: 'camp_abc123', refundable: 'false', } });
The booking fee is charged when the parent submits the application, not when the camp accepts. This mirrors the model of college application fees — you pay to apply, not to enroll. This is more favorable for the platform's revenue recognition and aligns with user expectation. The UX must make this timing explicit.
Refund & Cancellation Policy
OneSummer does not own the refund policy. Camps set their own cancellation and refund terms — the platform enforces and automates them. This is both a product principle (camps retain tuition ownership) and a liability management strategy (platform is not responsible for camp closures, session cancellations, or waitlist outcomes).
Policy Architecture
Each camp configures a refund policy at the listing level. The platform offers a set of configurable policy templates plus a custom option:
| Policy Template | Full Refund Window | Partial Refund Window | No Refund After |
|---|---|---|---|
| Flexible | Up to 30 days before session | 50% up to 14 days before | 14 days before session |
| Moderate | Up to 60 days before session | 25% up to 30 days before | 30 days before session |
| Strict | Up to 14 days of payment | None | 14 days after payment |
| Non-refundable | None | None | Immediately upon payment |
| Custom | Camp-defined | Camp-defined | Camp-defined |
Example: Flexible Policy Timeline
Platform-Level Protections
If a camp cancels a session (not the parent), OneSummer must issue full refunds to all enrolled parents, regardless of the camp's stated policy. This is a consumer protection baseline. The platform will: (1) claw back the camp's payout via Stripe Connect transfer reversal, (2) issue full refunds to all affected parents, (3) refund the booking fee as a goodwill gesture. The camp bears all costs. This must be in the Camp Terms of Service.
- Booking fee is always non-refundable (parent-initiated cancellations).
- Chargebacks are disputed on behalf of the camp. Chargeback disputes reference the camp's stated refund policy.
- OneSummer does not guarantee refund outcomes in chargeback scenarios — the camp's connected account bears the liability.
- Platform maintains a small operational reserve (see Risk section) to cover edge case refund scenarios.
Tax & Compliance
The tax treatment of OneSummer transactions turns on a single principle: camps are the merchants of record, not OneSummer. OneSummer is a payment facilitator and marketplace — it does not sell camp sessions; it enables camps to sell sessions to parents.
Merchant of Record Implications
- Collects and remits sales tax where applicable (state-specific for camp services — most states exempt educational/recreational camps, but this varies)
- Bears liability for chargebacks and disputes on their transactions
- Responsible for compliance with state-specific camper deposit and trust account laws (e.g., some states require camp deposits be held in escrow)
- Issues refunds subject to their own stated policy
- Collects and remits sales tax on platform-specific revenue: booking fees, subscription fees (SaaS), featured listing fees
- Generates and files 1099-Ks for qualifying camp payouts
- Maintains PCI DSS compliance via Stripe (offloaded)
- Complies with state money transmitter regulations (offloaded to Stripe Connect)
- OFAC/AML compliance (offloaded to Stripe Connect)
Sales Tax on Camp Tuition
Camp tuition is generally not subject to sales tax in most US states because overnight camps and educational programs qualify for exemptions. However, this is not universal:
| State Category | Tax Treatment | Action Required |
|---|---|---|
| Most states (CA, NY, TX, FL...) | Exempt — educational/recreational | Camp confirms exemption status |
| States with day camp taxation | Day camps may be taxable | Camp consults state tax advisor |
| Specialty camps (coding, sports) | May not qualify for exemption | Camp confirms with counsel |
OneSummer should not provide tax advice to camps. The Camp Terms of Service should clearly state that camps are responsible for their own tax compliance and that OneSummer provides financial facilitation only. Recommend camps consult a CPA or tax attorney for state-specific guidance. Consider partnering with a camp industry CPA firm as a resource/referral partner.
1099 Reporting for Camps
IRS regulations require payment platforms (payment settlement entities) to issue Form 1099-K to sellers who receive payments above the reporting threshold. As of 2024, the threshold is $5,000 (transitional threshold; eventually moving to $600 under the American Rescue Plan). OneSummer must file 1099-Ks for qualifying camps.
Filing Mechanics
stripe.tax.forms.list() to retrieve status for support purposes.1099-K Thresholds Reference
| Tax Year | Reporting Threshold | Source |
|---|---|---|
| 2023 | $20,000 / 200 transactions (pre-ARP) | IRS Notice 2023-74 |
| 2024 | $5,000 (transitional) | IRS Notice 2024-85 |
| 2025+ | $2,500 → $600 (phased in) | American Rescue Plan / IRS guidance |
The actual 1099-K generation, delivery, and IRS filing is handled automatically by Stripe for connected Express accounts. OneSummer's responsibility is (1) ensuring KYC completion during onboarding, (2) communicating the process to camps, and (3) providing a support path for camps with 1099-related questions. No custom tax filing infrastructure is needed at launch.
Camp Pricing Tiers
The following is the camp-facing monetization structure. Camps choose a listing tier that determines their visibility, features, and transaction take rate. All tiers include free application processing for parents.
- Basic camp profile page
- Appear in search results
- Receive applications via OneSummer
- Standard payout (T+2)
- Featured placement in search
- Video gallery (up to 5 videos)
- Verified reviews badge
- Priority support
- Analytics dashboard
- 15% transaction take rate
- Everything in Free
- Enhanced profile (rich text, photos)
- Analytics dashboard (views, CTR)
- Application management tools
- Email support
- Featured placement in search
- Video gallery
- Verified reviews badge
- Priority support
- 12% transaction take rate
- Everything in Listed
- Featured placement in search & discover
- Video gallery (up to 10 videos)
- Verified reviews badge
- Priority support (24h response)
- Advanced analytics (conversion, cohorts)
- Sponsored homepage placement
- Dedicated account manager
- 10% transaction take rate
- Everything in Featured
- Multi-location / multi-session management
- Sponsored homepage placement
- Dedicated account manager
- Custom take rate (negotiated)
- Early payout access
- White-glove onboarding
- API access for camp management systems
- Custom transaction take rate
Add-On: Featured Listing Boosts
Camps on any paid tier can purchase time-limited placement boosts:
| Boost Type | Placement | Duration | Price |
|---|---|---|---|
| Search Results Boost | Top 3 results for matching queries | 30 days | $50–150 |
| Category Spotlight | Top of category page (e.g., "Overnight STEM") | 30 days | $100–300 |
| Homepage Feature | Homepage hero / "Editor's Picks" section | 7 days | $200–500 |
| Email Spotlight | Featured in OneSummer parent newsletter | One-time | $150–400 |
Future Capabilities
Buy Now, Pay Later (BNPL) for Parents
Summer camp tuition is a high-ticket item — often $1,500–$8,000+ for multi-week overnight programs. BNPL meaningfully expands the addressable market by making these amounts accessible to families who budget monthly. This is a Season 2 feature due to integration complexity and regulatory considerations.
- Integrate Klarna via Stripe (available on Stripe Payment Element)
- Alternatively: Affirm direct integration (larger US market share)
- Camp receives full payout upfront — BNPL lender absorbs repayment risk
- Platform take rate still applies on gross tuition at time of BNPL approval
- BNPL providers charge 2–6% merchant fee (passed to platform or camp TBD)
- Increases conversion rate on high-ticket camps (est. 20–35% lift from industry benchmarks)
- Potential for OneSummer to white-label as "OneSummer Pay"
- Must display BNPL as an explicit payment option at checkout — not default
Early Payout for Camps
Camps often have significant upfront costs (staff hiring, facility prep) months before the season starts. Early payout allows camps to access their earned deposits before standard T+2 settlement.
Model A — Stripe Instant Payouts: Available today via stripe.payouts.create({ method: 'instant' }). Stripe charges 1% of payout amount. Available to debit card connected accounts (not bank ACH). Fast to implement — launch as a premium feature for Featured/Premier camps.
Model B — Revenue-Based Advance: OneSummer fronts a portion of anticipated season revenue to the camp, recovers via future payout deductions. Requires underwriting, carries credit risk, and may require lending licenses. Reserve for a dedicated fintech phase (Year 2+) in partnership with a banking partner (e.g., Stripe Treasury, Unit, or Moov).
Risk & Open Questions
Key Risks
| Risk | Severity | Mitigation |
|---|---|---|
| Camp cancels season post-payout; insufficient funds to refund parents | High | Hold first-season payouts in reserve until session confirms. Escrow model for new camps. |
| Stripe changes Connect pricing or terms | Medium | Abstract payment layer — design for processor swap. Evaluate Adyen after $1M GMV. |
| Chargebacks from disputed tuition charges | Medium | Clear refund policies displayed prominently. Dispute support team. Camp bears chargeback liability per ToS. |
| Booking fee perceived as "junk fee" | Medium | Full transparency, clear UX disclosure. Consider waiving Year 1 to build trust. |
| State money transmitter liability if Stripe Connect model changes | High | Legal review before launch. Stripe Connect offloads this risk — never build custom payout plumbing. |
| 1099 threshold changes create unexpected camp compliance burden | Low | Stripe handles mechanically. Proactive communication to camps each January. |
| Camp listing fee churn if take rate feels too high | Medium | Tiered take rate tied to listing subscription. Show ROI in camp dashboard. |
Open Questions for Legal / Finance Review
- Should first-season camp payouts be held in escrow until session begins? (Consumer protection vs. camp cash flow tension)
- Is the parent booking fee a "junk fee" under current CFPB guidance? Does it need to be included in the advertised tuition price?
- Which states require summer camp deposits to be held in trust accounts? (New York has specific camp deposit laws.)
- Does the 501(c)(3) exemption from 1099-K apply to all nonprofit camps, or only those with no unrelated business income from the sessions?
- At what GMV level should OneSummer engage a dedicated payments counsel and begin evaluating a proprietary money transmitter license?
- For BNPL: does offering parent financing require OneSummer to register as a credit service organization or credit broker in any state?
Before processing any live transactions, engage an attorney specializing in fintech / payment facilitation law to review (1) the Camp Terms of Service, (2) the Parent Terms of Service, (3) the merchant of record framing, and (4) the money transmitter question. Stripe Connect's structure should shield OneSummer from most MTL exposure, but this must be confirmed in writing for the specific operating model.