Token distributions to holders and creditors
What it is
Token distributions pay one asset out to many recipients at once, such as token holders at a record date, creditors in a claims process or employees, and are also called token payouts or creditor distributions.
Transfer agents, custodians and tokenization platforms run them, and each recipient has to be paid the right amount once, with records that show it.
A Goldsky Compose task snapshots who is owed and sends each payment through your custody provider, and a pipeline matches every delivery for your records, while the terms, the share rules and the signing policy stay with you.
Who it’s for
Transfer agents, custodians, wallet infrastructure providers and tokenization platforms that pay holders, creditors or employees in tokens.
How token distributions to holders and creditors work
The diagram follows one distribution from the approval of its terms to closing it out, and shows who does each step. Your setup may differ.
Declare the distribution terms
Every recipient’s share is worked out from the same few facts, so they have to be fixed and approved before anyone is paid.
Someone with authority approves the asset, the total amount and the record date (the cutoff that decides who is owed). If any of them changes after payments start, some recipients are paid on old terms and the totals stop adding up.
Snapshot who is owed at the record date
Handled by Goldsky ComposeHoldings change all the time, so you need a fixed list of who held what on the agreed day.
The list has to show each holder’s balance at the exact cutoff, rebuilt from every transfer up to it, or the wrong people are paid the wrong amounts. For creditors, the list comes from the claims register instead of token balances.
With Goldsky Compose, the payout task can start a one-time Turbo Pipelines job that rebuilds each holder’s balance at the record block, read the result, then delete the job, so nothing keeps running between distributions.
Start a Turbo job from a task (opens in a new tab)Hold back anyone without identity and tax checks
Creditor distributions are usually paid only to people who have proved who they are and filed the tax form the payer needs.
Your verification provider checks each recipient’s identity, and the tax form, such as a US W-9 or W-8, is collected before any payment. A recipient who hasn’t finished both is held back to a later distribution rather than paid.
Calculate each recipient’s share
The total is split by rules your team owns, such as pro rata to holdings, and the shares have to add back up to the amount declared.
Rounding has to be settled in those rules: if every share is rounded down and the remainder is never assigned, money is left over, and if shares are rounded up, the payout runs short before the last recipient.
Approve and sign the payments
Moving money takes a signature from a key, and most teams keep their keys with a custody provider whose rules say who can approve what.
Your signing endpoint holds the limits and approvers set before the distribution starts: it reads the recipient and amount from each payment’s call data, checks them, then asks your custodian to sign. If the key sits in application settings with no rules around it, anyone who can change the app can move the funds.
Send each payment and wait for it to confirm
Handled by Goldsky ComposeA payment is done when the chain has accepted it and it can no longer be reversed, which can be some time after it was sent.
A payment can be dropped before it’s included, or undone when the chain rewrites its most recent blocks (a reorg). Each one has to be retried until it sticks, and a retry must never pay the same recipient twice.
Compose can send each payment through a webhook wallet, which posts a UserOperation (the transaction format smart-account wallets use) to a signing endpoint you host, plus a one-time EIP-7702 authorization the first time it sends on a chain, and submits the payment, gas-sponsored, once your server returns the signature. The task then waits for the confirmations you set, resends a payment if a reorg drops it, and doesn’t send again a payment that already went through if it restarts mid-run.
Handle confirmations and reorgs (opens in a new tab)Settle each payment on the chain
The chain is the shared record both sides trust, so a payment counts once it’s recorded there.
Once a payment has enough blocks on top of it, the asset is in the recipient’s wallet and anyone can check the transfer. A payment that failed or was never included still shows as unpaid and has to be picked up.
Match every delivery to its recipient
Handled by Goldsky TurboYour payout list says who should have been paid and the chain says who was; checking one against the other tells you the distribution is complete.
Every transfer on the chain should match one line of the payout list by wallet and amount. A payment with no matching line, or a line with no payment, is a break someone has to explain before the distribution closes.
With Goldsky, you can hold the recipient list in a Turbo Pipelines dynamic table, which lives in a Postgres database, and have a pipeline match transfers from your payout wallet against it. Each match is written to your database or warehouse, and reorg corrections reach the same tables.
Filter transfers with dynamic tables (opens in a new tab)Keep an audit trail of the distribution
Handled by Goldsky ComposeAuditors and recipients may ask later who was paid, how much and why, and the answer has to come from records.
The record ties each payment to the snapshot, the share calculation, the approval and the transaction on the chain. When those sit in different systems with no shared reference, rebuilding one recipient’s history means searching each system by hand.
Compose logs every call a task makes, including each API request and transaction. Joined with the pipeline’s records on the transaction hash, that gives you one history per recipient.
How Compose logs each call (opens in a new tab)Close the distribution
Some payments fail or bounce, and someone has to decide what happens to them before the books close.
Unpaid recipients are followed up or paid again, unclaimed funds go back to the right account, and the total paid is checked against the amount declared. Left open, the unpaid balance sits in the payout wallet with no owner on your side.
What you control
- Your team
- Declare the distribution terms
- Calculate each recipient’s share
- Close the distribution
- Your providers
- Verification provider
- Wallet or custody provider
Security and deployment
- SOC 2 Type IIIndependently audited security controls.
- Dedicated infrastructureSingle-tenant options for production workloads.
- Data residencyCloud, on-premises or co-located.
More use cases that automate payouts
- Stablecoin payroll and contractor payoutsPay contractors and staff in stablecoins and confirm each payout settled.
- Stablecoin payouts for marketplaces and creatorsPay sellers, gig workers and creators in stablecoins from a marketplace balance.
- Payout prefunding in USDCPrefund a payout network in USDC and track the balance so payouts never stall.
- Airdrop eligibility lists and sybil filteringScore every address up to a snapshot block, remove sybil clusters and publish the list people claim against.
- Stablecoin disbursements for public-sector programsTrack government benefit or grant payments made in stablecoins, from issue to spend.
- Stablecoin merchant settlementPay each merchant’s settlement in stablecoins to the wallet and network it chose, on any day, and record the transaction against the settlement.
- Programmable escrow for B2B stablecoin paymentsHold a buyer’s stablecoin payment until delivery, a milestone or a deadline, then release it to the seller or refund the buyer.
Run token distributions with Goldsky
We’ll map it to your systems and show you what Goldsky runs, so your team builds the product, not the pipelines underneath it.