1 Dashboard
2 Transaction Ledger
3 First Payout
4 Final Payout
1 Dashboard + Ledger
2 Payout Celebration
1 Finances Hub
2 Transaction Ledger
Finances Dashboard
Finances — Main Dashboard
9:41
Finances
Total Earned
$24,350.00
$3,420
Pending
$5,230
In Escrow
47
Completed
View in Stripe
Download Statement
All 55
Pending 3
In Escrow 5
Completed 47
Search transactions...
Newest
55 transactions found
$2,140.00
Kitchen Renovation
Payout | Feb 23
Pending Release
$1,890.00
Bathroom Remodel
In Escrow | Feb 20
Funded
$3,420.00
Roof Repair
Completed | Feb 18
Released
$890.00
Deck Staining
Completed | Feb 15
Released
Home
Jobs
Chat
Finances
Profile

FinancesDashboarduseQuery(getEarningsSummary, getPendingPayouts, getPaymentHistory)

Transaction History (Ledger)
9:41
Transaction History
+$24,350
Income
-$2,070
Expenses
+$22,280
Net
Search ledger...
Newest
All Leads Payouts Change Orders SaaS
127 transaction(s) found
Lead Purchase
Lead: Kitchen Remodel, Akron
-$15.00
Feb 24
Job Payout
First payout: Roof Repair
+$1,368.00
Feb 23
Change Order
Additional work: Bathroom Tile
+$420.00
Feb 22
SaaS Payment
Pro Plus Monthly
-$999.00
Feb 20
Platform Fee
Plan-based fee: Deck Staining
-$59.63
Pending Feb 18
Home
Jobs
Chat
Finances
Profile

TransactionHistoryuseQuery(contractor.ledger.getLedger, getLedgerSummary), filter chips state

Payout Celebration
Payout Received — First Payout
9:41
YOU GOT PAID!
$1,368.00
Your first payout has been sent to your bank account
Roof Repair — Emergency Leak Fix
Akron, OH
Earnings Summary
This Payout $1,368.00
Total Earned to Date $24,350.00
Payouts typically arrive within 2–3 business days
View Earnings
View Job
Go to Dashboard

PayoutReceivedConfettiOverlay, spring animation, useQuery(api.jobs.jobs.get), payoutType="first"

Payout Received — Final Payout
9:41
FINAL PAYOUT!
$2,052.00
Your final payout has been sent to your bank account
Bathroom Remodel — Full Renovation
Cleveland, OH
Earnings Summary
This Payout $2,052.00
Total Earned to Date $26,402.00
Payouts typically arrive within 2–3 business days
View Earnings
View Job
Go to Dashboard

PayoutReceivedSame component, payoutType="final" variant

Data Architecture

Schema Tables

escrow {
  jobId, contractorId, posterId,
  amount, status, holdExpiresAt,
  firstPayoutAt, secondPayoutAt,
  platformFee, createdAt
}

payouts {
  escrowId, contractorId,
  amount, type (first | final),
  stripeTransferId, status,
  createdAt
}

jobs {
  posterId, contractorId, propertyId,
  title, description, jobTypeId,
  status, address, budget
}

contractorUsers {
  clerkId, email, stripeAccountId,
  stripeCustomerId, subscription
}

ledgerEntries {
  contractorId, type, amount,
  description, referenceId,
  createdAt
}

Convex Queries

contractor.payments
  .getEarningsSummary
  (total, pending, escrow, completed)

contractor.payments
  .getPendingPayouts
  (list of pending payout records)

contractor.payments
  .getPaymentHistory
  (paginated, filtered by tab)

contractor.transactions
  .getLedger
  (all ledger entries, paginated)

contractor.ledger
  .getLedgerSummary
  (income, expenses, net totals)

jobs.jobs.get
  (job details for celebration card)

Hooks & Components

Hooks:
  useThemedStyles
  useThemeColors
  useQuery (Convex)
  useResponsive
  useDebounce (search)

Components:
  ScreenLayout
  Card
  StatusBadge
  SearchInput
  Loading
  ConfettiOverlay
  ProgressBar
  FlatList (virtualized)

Financial Constants & Flows

BASIC_PLATFORM_FEE_RATE = 0.067
OWN_LEAD_PLATFORM_FEE_RATE = 0.00
MARKETPLACE_PLATFORM_FEE_RATE = 0.05
FIRST_PAYOUT_RATE = 0.40
SECOND_PAYOUT_RATE = 0.60
HOLD_PERIOD_HOURS = 24

Payout Flow:
  Contract signed → Poster funds
  → 24h hold period
  → 40% first payout released
  → Job completed
  → 60% final payout released
  → platform fee deducted per plan

Escrow States:
  pending → hold_period
  → funded → first_payout_sent
  → released

Mutations: None (read-only views
  + celebration is triggered by
  payout webhook, not user action)
Finances Dashboard + Ledger
9:41
Finances
Total Earned
$24,350.00
$3,420
Pending
$5,230
In Escrow
47
Completed
View in Stripe
Download
All (55) Pending (3) Escrow (5) Completed
Kitchen Renovation
Payout · Feb 23
$2,140.00
Pending
Bathroom Remodel
In Escrow · Feb 20
$1,890.00
Funded
Roof Repair
Completed · Feb 18
$3,420.00
Released
Deck Staining
Completed · Feb 15
$890.00
Released
Ledger Summary
+$24,350
Income
-$2,070
Expenses
+$22,280
Net
Recent Ledger Entries
Lead Purchase
Kitchen Remodel, Akron
-$15.00
Feb 24
Job Payout
First payout: Roof Repair
+$1,368.00
Feb 23
Change Order
Additional: Bathroom Tile
+$420.00
Feb 22
SaaS Payment
Pro Plus Monthly
-$999.00
Feb 20
Platform Fee
Plan-based: Deck Staining
-$59.63
Feb 18

Payout Celebration — First + Final
9:41
Payout Received
YOU GOT PAID!
$1,368.00
Your first payout has been sent to your bank account
Roof Repair — Emergency Leak Fix
Akron, OH
This Payout$1,368.00
Total Earned$24,350.00
First payout · 40% split
FINAL PAYOUT!
$2,052.00
Your final payout has been sent to your bank account
Bathroom Remodel — Full Renovation
Cleveland, OH
This Payout$2,052.00
Total Earned$26,402.00
Final payout · 60% split
Finances Hub — Earnings Overview
https://app.3bids.io/contractor/finances
3Bids
Dashboard ⌘1
Find Jobs ⌘2
Projects ⌘3
Messages ⌘4
Finances ⌘5
Ledger ⌘6
MK
Mike Kowalski
Contractor
Settings ⌘,
Finances
7D 30D 90D YTD
$24,350
Total Earned
$3,420
Pending
$5,230
In Escrow
47
Completed Jobs
Recent Transactions
All (55) Pending Escrow Completed
Job
Type
Amount
Status
Date
Kitchen Renovation
Payout
$2,140.00
Pending
Feb 23
Bathroom Remodel
In Escrow
$1,890.00
Funded
Feb 20
Roof Repair
Completed
$3,420.00
Released
Feb 18
Deck Staining
Completed
$890.00
Released
Feb 15

Transaction Ledger — Full History
https://app.3bids.io/contractor/finances/ledger
3Bids
Dashboard ⌘1
Find Jobs ⌘2
Projects ⌘3
Messages ⌘4
Finances ⌘5
Ledger ⌘6
MK
Mike Kowalski
Contractor
Settings ⌘,
Transaction Ledger
All Leads Payouts Change Orders SaaS
+$24,350
Total Income
-$2,070
Total Expenses
+$22,280
Net Earnings
Description
Reference
Amount
Status
Date
Lead Purchase
Kitchen Remodel, Akron
-$15.00
Completed
Feb 24
Job Payout
First payout: Roof Repair
+$1,368.00
Released
Feb 23
Change Order
Additional: Bathroom Tile
+$420.00
Released
Feb 22
SaaS Payment
Pro Plus Monthly
-$999.00
Completed
Feb 20
Platform Fee
Plan-based: Deck Staining
-$59.63
Pending
Feb 18