Nahuel D'Elias · Product engineer

(W01.4)vers1ons · 2025Shipped

Wallet & payouts

Money follows the rights.

Shows

  • Product, led
  • Design, led
  • Frontend, led
  • Backend, contributed
Role
Product and UX lead; platform credit end to end
Stack
Next.js · tRPC · Stripe Connect · Postgres · Inngest
Status
In production
The artist's wallet right after a sale: the available balance and the sale in recent earnings.
After a sale: the artist's share, then a contributor with no account · muted0:23

The decision

A license sale owes money to everyone on the song, and to everyone up the remix chain.

Chose
Let the money follow the rights: vers1ons pays each contributor their share directly, and every sale is a real transaction, even a free one.
Rejected
Paying the artist a lump sum and leaving them to split it by hand.
Cost
We own every payout. Everything around it had to be built to match: a Stripe account for each contributor, and a real ledger for credit.
How it worksMoney follows the rightsA sale is split the way the license says, and each share goes to its owner: the artist, every contributor, and the original artist up the chain. Bank details come in where selling starts, never at sign-up.

Money follows the rights

moneyCredit ledgera balance, not a couponevery change is a new row
buyerCheckoutcredit, card, or bothagreement signed first
Sale · Stripesettled once
rightsSplit by the licenserecording and compositioneach side to 100%
rightsEvery rights holderthe artisteach contributorthe original, up the chain
emailClaim by emailno account neededa new or existing account
Walletwhat you've earnedand from which sale
moneyWithdrawto the bank accountset up through Stripe Connect
  1. ready · press run, or hover any part of the system

Problem

The rights followed the chain. The money didn't.

A license knew everyone who owned a share of a song, but when it sold, the money went to one artist as a lump sum, and they had to split it themselves. New artists were asked for bank details before they’d made anything, and many left right there. And when we wanted to give licenses away, a coupon couldn’t do it: transferring rights takes a real transaction.

None of that scales by hand as sales and remixes grow, and artists and labels only stay if they trust that everyone gets paid right.

What I did

I made the product and UX calls, and built platform credit myself.

With a teammate’s payout groundwork in place, I made the call to pay every contributor their share directly, and designed how artists see it: the wallet, what they’ve earned, and withdrawing to their bank. I moved Stripe Connect out of sign-up, to where selling starts: publishing a listing, distributing, or the wallet. People can start right away and connect once they’re using the app.

A contributor doesn’t need an account to be owed money. When an uploader adds someone by email, that person is emailed that they have a share waiting. They can create a vers1ons account, or connect the one they already have, even under a different email, and claim it there.

Platform credit was mine end to end: a balance kept on a ledger, so a giveaway is a real purchase that transfers rights, with credit and card together at checkout, and a reversal when a sale doesn’t go through. The team wired up the Stripe API; I worked closely with it, and with how every payout and money check works behind the screens.

Feature by feature

7 steps, one screen at a time.

  1. The wallet: platform credit, the available balance and recent earnings.
    01WalletWhat you've earned, and from which sale. Credit is kept separate: you can spend it at checkout, but you can't withdraw it.
  2. Confirm Withdrawal: $250, instant, the fee and what arrives.
    02WithdrawPick an amount, instant or standard, and see the fee and what will arrive before confirming.
  3. A listing's earnings by contributor: the artist's share, and Mara Quinn's share held, not invited yet, with Resend invite.
    03Every contributor's shareEach sale is split the way the license says. A contributor without an account has their share held, and the artist can send the invite again.
  4. The claim page: a share waiting, with Connect, create an account, or use a different account.
    04Claim by emailFrom the email, a contributor sees what's waiting and claims it: a new account, or one they already have, confirmed with a code.
  5. After sign-up: set up your bank account, with Complete now or Complete later.
    05Bank details, laterSign-up has no bank step. Payout setup can wait until you first publish a listing or distribute, or you can do it from your wallet.
  6. Covered by your credit: no card needed.
    06Platform creditCredit is a balance, not a coupon. When it covers a purchase, there's no card form, and it's still a real sale, so the rights transfer.
  7. Analytics: revenue, direct sales and royalties, and earnings by song.
    07Earnings by songRevenue, sales and royalties at a glance, and every song's earnings one click away.

    What changed, and why

    The same part of the product in an early build and today.

    1. Signing up

      In December 2025, "Get paid" was a sign-up step: connect Stripe before you'd made anything. Today sign-up ends without it, and payout setup waits until you first publish a listing or distribute.

      A sign-up step asking to connect Stripe to get paid.
      Before · Dec 2025"Get paid" during sign-up.
      After sign-up, an optional prompt to set up a bank account later.
      Now · Oct 2026Optional, after sign-up.
    2. A first listing

      In July 2026, choosing New Listing hit a wall until bank details were in. Now the wizard opens straight away; payouts are asked for when the listing goes on sale.

      New Listing blocked by a Complete Account Setup prompt.
      Before · Jul 2026Blocked until payouts were set up.
      New opens the upload wizard directly.
      Now · Oct 2026Straight into the wizard.
    3. The wallet

      The wallet was a balance and a transfer form. Today it separates credit from money you can withdraw, shows pending earnings, and lists every sale and royalty it came from.

      The wallet in November 2025.
      Before · Nov 2025A balance and a transfer form.
      The wallet today, with credit, available balance and recent earnings.
      Now · Oct 2026Credit, balance and every earning.

    Reliability

    Every money check runs on the server, and fails safe.

    Payouts go to one Stripe account per person, and if a lookup ever finds two, it refuses instead of guessing. A contributor’s share stays held until they claim it, and claiming it into a different account takes a code sent to the email they were credited under. Payout setup is checked on the server everywhere money moves, and the app responds to a stable reason, not to the wording of an error. Credit lives on a ledger where nothing is edited: it can’t be spent twice, and a sale that never completes gives it back in the same step.

    Outcome

    Live: every contributor is paid directly, and no one hits a bank form to sign up.

    Artists see their balance and withdraw it, and every contributor gets their share without the artist doing the math. Someone added by email is told they have a share waiting, and can claim it with a new or existing account. Giveaway licenses run on platform credit, as real sales.

    Showcase content. Artwork belongs to its respective owners. Artist names, prices and royalty figures are fictional, and no affiliation is implied. Recordings come from an isolated local copy of the product running seeded data; payouts and withdrawals are staged.