Showcase · Live on testnet

Send revenue once. The chain fans it out.

One contract, one address, N payees. Every incoming payment is split by basis-point share inside the same on-chain transaction. No spreadsheet. No monthly reconciliation. No trust required between the people splitting the money.

payees per split
1 tx
fans out to all
0
monthly settlement
5 sec
finality
Contract Source

A splitter is 30 lines of JavaScript.

// RevenueSplitter — every incoming payment auto-distributes
// across a fixed list of payees, by basis-point share.

contract RevenueSplitter {
  init({ payees }) {
    // payees = [{ addr, bps }] — sum of bps must equal 10000.
    let total = 0;
    for (const p of payees) total += p.bps;
    assert(total === 10000, 'shares must sum to 100%');
    storage.set('payees', payees);
    storage.set('totalPaid', 0);
    emit('SplitterCreated', { payees });
  }

  // Default receive — anyone can send ASE here, the chain
  // immediately fans it out across every payee in one tx.
  receive() {
    const payees = storage.get('payees');
    const incoming = msg.value;
    for (const p of payees) {
      const cut = (incoming * p.bps) / 10000;
      transfer(p.addr, cut);
      emit('Paid', { to: p.addr, amount: cut });
    }
    storage.set('totalPaid', storage.get('totalPaid') + incoming);
  }

  // Read-only — anyone can audit the share table at any time.
  shares() {
    return storage.get('payees');
  }
}

The receive() handler fires on every incoming payment. The chain walks the payee list, transfers each cut, emits a Paid event per recipient. Shares are immutable once deployed — anyone can audit the table by calling shares().

One incoming payment
PAYER
Spotify · royalty
1,000 ASE
SPLITTER
0x7fd4…contract
fans out (in-block)
Artist A
40%
Artist B
40%
Producer
15%
Label
5%
One on-chain transaction. Four recipients. Zero handshakes.
01Deploy

Define the share table.

Each payee gets a basis-point share. Sum to 10,000. Deploy. The address is now a permanent revenue-routing point.

02Receive

Anyone sends to the address.

Distributors, marketplaces, customers, NFT secondaries — they all just send to one address. They don't care about the split.

03Distribute

Chain fans out in the same tx.

Every payee gets their cut in the same block as the incoming payment. No monthly batch, no off-chain reconciliation, no waiting.

Why this matters

Splitting revenue is the oldest unsolved business problem.

No trust required

Co-founders, co-artists, co-creators — no one has to hold the money. The contract holds it for exactly one block.

Auditable forever

Every payment, every split, every recipient is on-chain. No QuickBooks export, no he-said-she-said about percentages.

Composable

A splitter address is just an address. Plug it into Stripe, NFT royalties, subscriptions, anywhere money arrives.

Cross-border by default

Payees in any country. No payroll provider, no Wise account, no SWIFT fees, no FX spread.

Live in 5 seconds

Payees see their cut land in the same block as the incoming payment. No monthly cheque, no batch run, no T+30.

Immutable shares

The split table is locked at deploy. No one can change it later — even the deployer. Predictability as a service.

What you can build

Eight kinds of split on one primitive.

The contract above is ~30 lines. Each of these is a one-line edit to the share table.

Band royalties

Four members, equal split, every streaming payout.

NFT secondary

Marketplace sends here; artist + collab + treasury share.

Affiliate program

Sale arrives, referrer gets 20%, merchant 80%, instant.

DAO treasury

Income auto-streams to operating / dev / community pools.

Investor pro-rata

Pre-seed cap table receives distributions proportionally.

Co-founder vesting

Cap-table-aware splitter — adjust shares via second contract.

Creator collabs

Manager / editor / creator on every monthly membership.

Open-source tips

Repo address fans tips to maintainers by commit weight.

Source

Read the contract on GitHub.

RevenueSplitter.js — 30 lines, no dependencies, no surprises.

Composable

Plug into anything.

A splitter address is just an address. NFT royalties, Stripe webhooks, anywhere money lands.

Reference

ARC-20 transfers underneath.

The splitter uses native ASE transfers — same primitive every payment dapp on Asentum builds on.

Testnet Live

Stop reconciling. Start splitting.