Phase 1 — Production Readiness (P0)
1.1 — PDF Invoice Generation
Files:api/lib/pdf-invoice.ts (new), api/routes/instance-admin.tsUI:
Download PDF button in InvoiceSection detail dialog
1.2 — Mark Invoice as Paid
api/routes/instance-admin.ts (mark_invoice_paid action)UI:
Mark as Paid button in InvoiceSection (owner/admin only)
1.3 — Backfill billing_period
Phase 2 — Credit Notes & Dunning (P1)
2.1 — Credit Notes
2.2 — Overdue Cron + Email
Files:api/queue/billing-cron.ts (nightly job)Files:
api/routes/instance-admin.ts (trigger email on finalize_invoice)
Phase 3 — Distribution Model (P0 for distribution use cases)
3.1 — Merchant Distribution Fields
3.2 — Distribution Tiers
3.3 — Settlement & Rebate Tables
Migration 044:merchant_settlements + merchant_rebates (full DDL in §6)
3.4 — Settlement API Actions
New actions ininstance-admin.ts:
generate_settlement— create settlement statement for merchant + period\finalize_settlement— issue to merchant\mark_settlement_paid— record payment, trigger rebate calculation\list_settlements— paginated list per instance\get_settlement— detail + line items\list_rebates— rebate notices per instance\mark_rebate_paid— record rebate payment + tx_hash\
3.5 — Settlement UI
New sub-tabs inRevenueTab:
Settlements— per-merchant statements, generate/finalize/mark-paid\Rebates— rebate notices, status, payment recording\
Phase 4 — Fee Collection Automation (P1)
4.1 — Collection Retry Queue
Retry job usingnext_retry_at + collection_attempts. Exponential backoff (1h × 2^attempts). Max 5 attempts → abandoned.
4.2 — billing_mode Enforcement
In collectCreationFee(): if instance.settings.billing_mode === 'invoice' → set collection_status = 'invoiced', skip on-chain transfer.
Phase 5 — Analytics & Reconciliation (P2)
5.1 — Nightly Reconciliation Job
Compare fee_ledger sums vs. cheque count expectations.5.2 — Volume Tier Auto-Upgrade
Monthly check againstvolume_threshold_monthly.
5.3 — Revenue Charts
12-month rolling trend inAdminB2BDashboardTab.
Phase 6 — USDC Rate Documentation (P1)
Phase 7 — Branded PDF (Gotenberg) (P2)
Addgotenberg/gotenberg:8 container to docker-compose.yml. Create api/templates/ with HTML invoice and settlement templates supporting instance branding (logo, colors, USDC wallet QR code).