If you run a community where creators can earn, money questions arrive before feature requests do. Members ask what they get for paying. Creators ask when they get paid. Your finance person asks what happens when a fan disputes a card payment after the creator has cashed out. A platform that can't answer these clearly loses creators' trust quickly.
This guide walks through how money moves in SocialPro, our self-hosted social, chat and creator platform: what members can buy, how creators earn, how payouts work, and how refunds and chargebacks are handled. It also explains the double-entry ledger underneath it all, in plain terms, because that ledger is what lets you answer "where did this money go?" for any transaction. Where the product does not do something you might expect, this guide says so.
The money map in one table
SocialPro has two kinds of money: real money (cards charged through Stripe) and coins, an in-app currency members spend on creators.
| What a member does | Paid in | Who receives it |
|---|---|---|
| Subscribes to a plan (Basic, Pro, Creator, VIP) | Card, monthly or yearly | The platform |
| Buys a coin pack | Card | The platform (coins go to the member's wallet) |
| Tips a creator | Coins | The creator, minus the platform commission |
| Unlocks a pay-per-view post | Coins | The creator, minus the commission |
| Pays to open a DM with someone they're not connected to | Coins | The creator, minus the commission |
| Pays a whisper fee (anonymous message) | Coins | The recipient, minus the commission |
| Tops up an advertiser balance | Card | Held as ad balance, spent on campaigns |
Card payments go through Stripe Checkout. Creators cash out through Stripe Connect Express. Without Stripe keys, the whole flow runs in a simulated test mode, which is useful for demos and staging.
An important clarification about "subscriptions"
In SocialPro, subscriptions are platform plans: a member pays the platform for Basic, Pro, Creator or VIP, and gets entitlements such as a badge, monthly AI credits, a feed reach boost, an ad-free feed and larger uploads. The Creator and VIP plans also unlock monetisation tools.
There is no fan-to-creator subscription in the current code, where a fan pays one creator every month for access to their posts. Creators earn through coins: tips, pay-per-view, paid DMs and whisper fees. If your business model depends on per-creator subscriptions, plan for that as a customisation. The ledger and pay-per-view unlocks give it a solid base, but it is not there out of the box.
How members pay
Plans
The plan catalogue lives in the code, in one typed file, and the server never accepts a price from the browser. Pro and Creator include a free trial for first-time subscribers. Members can cancel at the end of the period and undo that cancellation before it takes effect. If a renewal payment fails, the plan stays active in a past_due grace period while Stripe retries the card.
Coin packs
Members buy coins in packs, some with bonus coins, through Stripe Checkout. Fulfilment is idempotent: a test in the billing suite completes the same checkout twice at the same moment and checks that the coins arrive exactly once.
Spending coins
- Tips can be sent from posts and profiles. A single tip has a maximum size and members have an hourly tip limit, both set in Admin → Fees & plans. AI profiles can't receive coins, and nor can banned or deactivated accounts.
- Pay-per-view posts show a preview and blurred media until a member pays. The unlock offer is signed on the server, so a member can't edit the price in the browser, and each member is charged at most once per item.
- Paid DMs apply when a creator's message settings would otherwise refuse a stranger. The creator sets a coin price, and paying it opens the chat once.
- Whisper fees let a creator charge for anonymous messages. The recipient sees the amount but never who paid it.
How creators earn
Who can earn? Pay-per-view posts and payouts need either a verified account or the Creator or VIP plan. Admins grant verified badges from the user console.
When a fan spends coins on a creator, the platform splits the amount in one entry: the fan's wallet goes down by the full amount, the creator's earnings go up by the amount minus the platform commission, and the commission goes to the platform's fee account. The commission percentage is a setting in Admin → Fees & plans, not a constant in the code.
The creator dashboard shows:
- earnings on hold and earnings available to cash out
- lifetime and this-month totals, with gross, fees and net
- a breakdown by type (tips, unlocks, paid DMs, whisper fees)
- a 30-day chart and the top-earning posts and conversations
Payout holds: why earnings wait
New earnings don't become withdrawable straight away. They land in an on hold balance, and an hourly background job moves anything older than the hold period into the available balance. You set the hold period (in days) in Admin → Fees & plans.
The hold is your buffer against chargebacks. If a fan disputes a card payment a few days after spending those coins, the money has not left the platform yet. The job skips any account that is frozen because of an open dispute.
Cashing out
A creator connects a payout account through Stripe Connect Express from their Creator page. Stripe handles identity checks and bank details, and SocialPro only enables payouts once Stripe reports the account as ready. Then:
- The creator chooses how many available coins to cash out. There's a minimum payout amount, which you set.
- Only one payout can be in progress at a time.
- The ledger is debited first, then SocialPro sends a Stripe transfer to the creator's connected account.
- If the transfer fails, or Stripe later reverses it, the payout is marked failed and the coins go back to the creator's available balance, with a notification.
Payouts and refunds are also refused on a session the platform rates as high risk (a new device on a new network or country) until the person signs in again.
Refunds and chargebacks
Refunds issued by staff
Admins with the refund permission can refund a payment from the billing console. SocialPro refunds the charge on Stripe and posts a reversal in the ledger. Two rules protect you:
- Spent coins. If a member bought a coin pack and has already spent some of it, the refund is refused with a clear message. An admin can force it, in which case the member's wallet goes negative and the debt is visible in the ledger.
- Subscriptions. Refunding a plan payment ends the plan immediately and returns the member to the free tier.
A refund issued directly in the Stripe dashboard is mirrored too: the charge.refunded webhook posts the same reversal.
Disputes
When a cardholder opens a dispute, SocialPro:
- reverses the original payment in the ledger, allowing a negative wallet if the coins are gone
- freezes the payer's wallet
- freezes the earnings of every creator that member sent coins to since the purchase, so none of that money can be paid out while the dispute is open
When the dispute closes, the frozen accounts are released. If you won, the original payment is reinstated. Creators see that their balance is frozen, and a payout attempt during the freeze gets a plain message rather than an error.
The double-entry ledger, in buyer-friendly terms
All of the above sits on one rule: every movement of money is written as a balanced entry. Money never appears or disappears; it moves from one named account to another, and both sides are recorded.
Think of it as a set of labelled jars: each member's wallet, each creator's on-hold and available earnings, each advertiser's balance, plus platform jars for fees, coin sales, subscription revenue, tax collected, payouts and cash held at Stripe. A tip of 100 coins is a single entry: 100 out of the fan's wallet, the creator's share into their on-hold jar, the commission into the fee jar. The two sides must add up, or the entry is refused.
What that gives you in practice:
- Nothing is edited after the fact. A refund or a failed payout is a new reversal entry linked to the original, so the history always shows what happened and when.
- No double charges on retries. Every entry carries a unique key. If a webhook arrives twice or a member double-clicks, the second attempt returns the first entry instead of charging again.
- No overdrawn wallets by accident. Wallets, creator balances and ad balances can't go below zero, except through deliberate system corrections such as a forced refund or a chargeback, which record the debt.
- Whole numbers only. Amounts are stored as whole coins or whole cents, so there are no rounding drifts.
- Coins and cash are kept apart. Each entry must balance separately in coins and in dollars.
- An integrity check you can run. The admin billing page includes a check that confirms every entry balances, total debits equal total credits, and every cached balance matches the balance recalculated from the journal.
Every Stripe webhook event is stored and shown in Admin → Stripe webhooks. Duplicate deliveries are acknowledged without being processed again, and failed events can be replayed once the cause is fixed.
How it's tested
The billing integration suite has 14 test cases, covering refused unbalanced entries, idempotency, overdrafts, reversals, the tip split, unlocks, the hold-release-payout cycle, webhook replays, refunds and disputes, and a final check that the whole ledger balances.
A launch checklist for creator payments
- Decide your commission, hold period, minimum payout and tip limits in Admin → Fees & plans.
- Set plan and coin-pack prices in the billing catalogue file before launch.
- Add Stripe keys and the webhook secret, and enable Connect in Stripe for creator payouts.
- Set up tax in Stripe, since Checkout sessions use automatic tax.
- Decide who can earn: verified creators only, Creator/VIP plan holders, or both.
- Write your refund and dispute policy, and tell creators about the hold period up front.
- Run the ledger integrity check after your first test transactions.
- Keep the background worker running: hold releases and subscription renewals depend on it.
For the platform launch itself (feature flags, roles and ads), see how to launch your own community and creator platform.
Where to go next
SocialPro gives you plans, coins, tips, pay-per-view, paid DMs, payout holds and Stripe Connect payouts on a ledger you can audit, and it is honest about what is missing: per-creator fan subscriptions would be a customisation, which DEV3 can build for you. Get the source on the SocialPro marketplace page, or read the case study for the realtime, ledger and ad-auction design.



