Stripe Connect

Payments Infrastructure

Stripe Connect Express — Zero Data Risk

Tonal never handles bank details or Social Insurance Numbers. Stripe's hosted onboarding means musicians enter sensitive data directly on Stripe's servers. We only store a useless-to-hackers Account ID.

✓
Zero Data Risk Model

Tonal never sees, stores, or processes bank account numbers, SINs, or government IDs. All sensitive data is entered directly on Stripe's PCI-DSS Level 1 certified servers. The only musician identifier we store is their Stripe Account ID — a string that is meaningless outside Stripe's system.

01

Register Platform Business

Create a Stripe Platform Account under your legal Canadian business entity (Sole Proprietorship or Corporation). Under Connect Settings → choose Express account type.

→Legal entity anchors all payouts — required by Stripe and FINTRAC
→Express = Stripe hosts all musician KYC / bank onboarding
→Your platform account holds the subscriber pool as 'pending balance'
→Stripe handles all PCI-DSS compliance on musician data
Data We Store

Nothing sensitive. Only: Stripe Platform Account ID.

02

Musician Onboarding via Account Link

When a musician joins, your API calls Stripe to generate a unique hosted onboarding URL. The musician enters their bank details and government ID on Stripe's servers — never yours.

→POST /v1/accounts → creates a blank Express account
→POST /v1/account_links → returns a time-limited Stripe URL
→Redirect musician to that URL (stripe.com/...)
→Stripe sends musician back to your return_url on completion
→Webhook 'account.updated' fires when onboarding is complete
Data We Store

Only: acct_XXXXXXXXXXXXXXXXX (Stripe Account ID).

03

Subscriber Payment Handling

Subscribers pay $10/month via Stripe Billing. The full amount lands in your platform's balance as pending. No musician money is touched until the payout cycle.

→Stripe Billing manages recurring subscription lifecycle
→application_fee_amount captures Tonal's 20% platform fee
→Remaining 80% held as platform balance for artist pool
→Payment metadata tags subscriber_id for payout attribution
Data We Store

Stripe Customer ID + Subscription ID. No card data.

04

Monthly Payout Pool Calculation & Transfer

On the 1st of each month, your payout engine calculates each musician's proportional share and issues Transfer API calls to move money from your platform balance to each musician's Express account.

→Payout engine reads qualified listen events for the billing period
→Per-subscriber allocation: each user's $8 flows to their listened tracks
→POST /v1/transfers → { amount, currency, destination: acct_XXXX }
→Stripe auto-deposits from Express account to musician's bank (T+2)
→Transfer IDs written to on-chain payout ledger (TonalPayout.sol)
Data We Store

Transfer ID + amount per musician. No bank details.

05

Compliance & Terms

Because you direct money flow, check RPAA registration thresholds. State clearly in your ToS that you are a platform, not a bank, and that funds are held by Stripe.

→FINTRAC: Stripe is the money services business — Tonal is a platform
→RPAA (Retail Payment Activities Act): review volume thresholds
→ToS must state: 'Funds are held by Stripe Payments Canada Ltd.'
→ToS must state: 'Tonal is a technology platform, not a financial institution'
Data We Store

No SINs, no bank details, no card numbers — ever.

0:00
0:00

Welcome to Tonal

Human-made music, fair payouts, and a platform built for independent artists.

Human-made music only
Support artists directly
AI-generated music blocked
Transparent payouts
1 / 7