Vibescript Showcase
Payout schedule
Schedule merchant payouts with money totals, cadence enums, and Duration-based settlement delays.
Source
showcase/finance/payout_schedule.vibe
# title: Payout schedule
# category: Vibescript Showcase
# difficulty: Showcase
# summary: Schedule merchant payouts with money totals, cadence enums, and Duration-based settlement delays.
# description: This example demonstrates how billing flows benefit when payout timing and cash amounts stay explicit in the code.
# tags: finance, money, durations, enums, payouts
# vibe: 0.2
enum PayoutCadence
Daily
Weekly
Monthly
end
def settlement_delay(cadence: PayoutCadence) -> duration
if cadence == PayoutCadence::Daily
1.day
elsif cadence == PayoutCadence::Weekly
7.days
else
30.days
end
end
def payout_job(batch_id: string, cadence: PayoutCadence, total: money, closed_at: time) -> hash
delay = settlement_delay(cadence)
{
batch_id: batch_id,
cadence: cadence.name,
total: total,
settlement_delay: delay.iso8601,
payout_at: delay.after(closed_at).format("2006-01-02T15:04:05Z")
}
end
def run
closed_at = Time.at(1700400000)
{
daily: payout_job("batch_daily_19", PayoutCadence::Daily, money("1820.44 USD"), closed_at),
monthly: payout_job("batch_monthly_07", PayoutCadence::Monthly, money("98210.17 USD"), closed_at)
}
end
Output
Press run to execute run from this example.