Skip to content
Back to Monetization & Revenue

Payout Schedule

How to schedule payouts to creators, affiliates, or marketplace sellers reliably and compliantly.

Why

If you run a marketplace, an affiliate program, or a creator platform, you owe money to many small payees. The hard part is not sending the money — it is deciding when, to whom, and how much, while respecting minimum payout thresholds, tax forms (W-9/W-8BEN), and sanctions screening. A bad payout system either pays too often (Stripe payout fees eat the margin) or too rarely (creators leave because they cannot access earnings). The right design is a batch job that accumulates balances, enforces a minimum threshold (e.g., $50), collects tax forms before first payout, screens against the OFAC SDN list, and then uses Stripe Connect or PayPal Payouts to disburse. Getting this wrong creates real legal liability — paying a sanctioned entity is a federal crime even if accidental.

When

When you have more than 10 payees (creators, affiliates, sellers) and cumulative payouts exceed $600/year per payee (the US 1099 threshold).

How

1. Choose the rail: Stripe Connect for card/ACH payouts (US/CA/UK/EU), PayPal Payouts for global wallet, or Wise for low-fee international bank transfers
2. Set a minimum payout threshold ($50 is common — below this, fees eat too much) and a payout cadence (monthly on the 1st is standard)
3. On first signup, collect a tax form: W-9 for US persons, W-8BEN for non-US — store the TIN and residency; block payout until collected
4. Run a weekly batch job that: (a) sums each payee's available balance, (b) skips those below threshold or missing tax forms, (c) screens each payee name + country against the OFAC SDN list via an API like sanctions.io
5. For each qualifying payee, create a Stripe Connect transfer or PayPal Payout with the amount, and mark the balance as 'in_payout'
6. On payout webhook confirmation, move balance to 'paid' and record the payout id; on failure, move back to 'available' and alert ops
7. At year-end, generate 1099-NEC forms for US payees over $600 via a service like Tax1099 or Stripe's 1099-MISC API
8. Build a payout dashboard where payees see pending, in-flight, and paid amounts — transparency cuts support tickets by 80%

Example

// weekly payout batch (run via cron or Stripe Sigma)
async function runPayouts() {
  const payees = await db.payee.findMany({ where: { availableBalance: { gte: 50 } } });
  for (const p of payees) {
    if (!p.taxForm) continue;
    if (await isSanctioned(p.name, p.country)) { await flagForReview(p); continue; }
    const transfer = await stripe.transfers.create({
      amount: Math.round(p.availableBalance * 100),
      currency: "usd",
      destination: p.stripeAccountId,
    });
    await db.payout.create({
      data: { payeeId: p.id, amount: p.availableBalance, stripeTransferId: transfer.id, status: "in_payout" },
    });
    await db.payee.update({ where: { id: p.id }, data: { availableBalance: 0 } });
  }
}

Common Problems

  • ⚠Paying out without collecting a W-9/W-8BEN first — the IRS requires you to withhold 24% backup withholding if no TIN is on file, and failing to do so makes you liable for the tax. Block payouts until the form is collected.
  • ⚠Not screening against the OFAC SDN list — paying a sanctioned individual or entity is a federal crime with penalties up to $20M, even if you did not know. Screening takes one API call and is not optional.
  • ⚠Paying out on every transaction instead of batching — Stripe charges $0.25 per payout, so paying out 100 creators $5 each costs $25 in fees on $500 of payouts. Batch to a monthly cycle.

Best Practices

  • ✓Use Stripe Connect Express accounts — Stripe handles the KYC, tax form collection, and sanctions screening for you, shifting the compliance burden.
  • ✓Show payees a real-time available balance and a projected next-payout date in their dashboard — the #1 support ticket is 'where is my money', and a dashboard answers it before it is asked.
  • ✓Keep an escrow buffer of 5-10% of payouts for 30 days to cover chargebacks and refunds — paying out 100% immediately leaves you funding reversals out of pocket.