General ledger, ap and ar and bank reconciliation, in one system.
Milestone billing, T&M, fixed price invoicing
Explore the specification
| Project | Rev Rec Period | Open WIP | Invoiced To Date | Aging0to30 |
|---|---|---|---|---|
| PRJ-1000 | RRP-1852 | 11,836.03 | 33,886.70 | 23,061.77 |
| PRJ-1859 | RRP-1933 | 9,531.16 | 9,516.76 | 10,284.45 |
| PRJ-2154 | RRP-5412 | 29,058.24 | 38,165.74 | 17,378.59 |
| PRJ-9704 | RRP-4616 | 17,834.17 | 22,460.08 | 24,790.81 |
| PRJ-5153 | RRP-6578 | 47,208.34 | 36,081.29 | 26,785.87 |
| PRJ-2980 | RRP-7631 | 45,189.05 | 43,528.04 | 7,118.35 |
- PRJ-5043IL-110218 JulPending
- PRJ-7786IL-239830 AugInvoiced
- PRJ-9108IL-930718 JulWrittenOff
- PRJ-6533IL-257906 SepExcluded
- PRJ-8193IL-832409 JulPending
- INV-70722 PRJ-3823 in 6 d
- INV-22463 PRJ-7806 8 d
- INV-95689 PRJ-8852 in 6 d
- INV-75236 PRJ-3739 3 d
- INV-93085 PRJ-8807 12 d
- Project
- PRJ-3823
- Customer
- CUS-040
- PeriodEnd
- 23 Sep
- Subtotal
- 4,744.79
- Tax
- 9,612.63
- INV-16202 PRJ-9152 in 4 d
- INV-74147 PRJ-2042 12 d
- INV-22526 PRJ-6401 in 8 d
- INV-63949 PRJ-6880 5 d
- INV-69676 PRJ-2015 12 d
- Project
- PRJ-9152
- Customer
- CUS-114
- PeriodEnd
- 21 Sep
- Subtotal
- 27,771.06
- Tax
- 8,002.76
- WO-62140 INV-44395
- WO-52837 INV-55584
- WO-71798 INV-60410
- WO-49473 INV-76937
- WO-94675 INV-64053
- Invoice
- INV-44395
- Project
- PRJ-3968
- Amount
- 28,502.14
- Reason
- Uncollectible
- RequestedBy
- RSR-2676
Approval conditions.
- WPD-14549 PRJ-8103
- WPD-65547 PRJ-9621
- WPD-91854 PRJ-3691
- WPD-87118 PRJ-9211
- WPD-77066 PRJ-9593
- Project
- PRJ-8103
- RevRecPeriod
- RRP-4652
- AdjustmentType
- Writeup
- Amount
- 17,856.48
- Reason
- Draft wpd-282
Approval conditions.
| Hold Number | Project | Reason | Description | Placed By |
|---|---|---|---|---|
| BH-12005 | PRJ-2624 | ScopeDispute | Active bh-347 | RSR-9459 |
| BH-99347 | PRJ-4470 | ChangeOrderInFlight | Active bh-599 | RSR-4901 |
| BH-16763 | PRJ-2588 | CreditHold | Active bh-496 | RSR-3537 |
| BH-75014 | PRJ-8202 | ContractAmendment | Active bh-791 | RSR-7245 |
| BH-99492 | PRJ-6933 | ClientRequest | Active bh-328 | RSR-6419 |
| BH-39077 | PRJ-1851 | Other | Active bh-202 | RSR-1949 |
| Entry Number | Project | Method | Recognized Revenue Period | Recognized Revenue To Date |
|---|---|---|---|---|
| RRE-27451 | PRJ-9464 | PercentageOfCompletion | 27,756.00 | 35,086.16 |
| RRE-76809 | PRJ-6009 | Milestone | 47,837.19 | 37,616.80 |
| RRE-11193 | PRJ-2125 | SellThrough | 27,026.57 | 15,630.43 |
| RRE-16405 | PRJ-7388 | RatableOverTime | 33,256.96 | 21,217.95 |
| RRE-48574 | PRJ-1989 | PercentageOfCompletion | 30,140.82 | 13,546.93 |
| RRE-46713 | PRJ-7283 | Milestone | 31,253.27 | 38,360.40 |
| Invoice | Sequence | Approver Role | Invoice.Project | Invoice.Customer |
|---|---|---|---|---|
| INV-37013 | 90 | ProjectManager | INV-730 | INV-370 |
| INV-92919 | 30 | Controller | INV-429 | INV-572 |
| INV-30856 | 90 | Admin | INV-905 | INV-351 |
| INV-22816 | 20 | BillingSpecialist | INV-765 | INV-441 |
| INV-60561 | 50 | ProjectManager | INV-193 | INV-208 |
| INV-65076 | 60 | Controller | INV-485 | INV-917 |
| Contract Number | Project | Customer | Billing Type | NTECap |
|---|---|---|---|---|
| BC-59605 | PRJ-4366 | CUS-041 | TM | 29,044.74 |
| BC-93402 | PRJ-6319 | CUS-175 | FixedFee | 18,400.54 |
| BC-89011 | PRJ-1048 | CUS-106 | Milestone | 34,577.67 |
| BC-35631 | PRJ-4259 | CUS-120 | RetainerWithTrueUp | 32,501.75 |
| BC-64100 | PRJ-2985 | CUS-153 | TM | 2,325.23 |
| BC-12887 | PRJ-9752 | CUS-230 | FixedFee | 4,713.71 |
Illustrative records generated from the specification. Explore the views to inspect the planned operating model.
Built for your team.
Controllers and finance teams who close on time and can show their work.
- Defined tables
- 19
- Operational views
- 12
- Defined roles
- 6
- Reports
- 8
Defined in the planned system specification.
What’s inside.
Milestone billing, T&M, fixed price invoicing
General ledger
Chart of accounts, journals and dimensions
AP and AR
Bills, invoices, payments and aging
Bank reconciliation
Statements matched to the ledger
Period close
Checklists, accruals and lock
Budgets
Plans, versions and variance
Reporting
Statements, packs and drill-down
Period close
General ledger, ap and ar and bank reconciliation, in one system.
Start now ↗- 01Accruals
- 02Reconcile
- 03Review
- 04Post
- 05Report
Built for your team
Project Manager
Runs one or more Projects end-to-end; the named ProjectManager on Projects for own engagements. Drafts invoices for own projects, reviews WIP, approves at the first step of the approval chain, escalates billing issues.
Billing Specialist
Operational role — assembles invoices, runs the monthly billing job, validates draft invoices, applies WriteOffs and WIPAdjustments per Controller approval, exports invoices to the Client Portal. The day-to-day operator.
Controller
Owns Invoice approval at the final step, RevRec sign-off, WIPAdjustments and WriteOffs approval, and the GL post handoff oversight. The Finance side of the billing engine.
AR Clerk
Light AR role — sees Invoice lifecycle and applies payment status echoed from Finance Accounting. Overlap with fin-accounting AR Clerk; this role's scope inside pm-billing is read-mostly.
Resource
The billable individual whose hours appear on Invoices. Limited self-service read on own time entries — sees that own hours were billed, on which invoice, at what bill rate (own only).
Reports and dashboards
Explore what each report measures and the records behind it.
WIP Aging
Per Project: OpenWIP balance bucketed by aging band (0–30, 31–60, 61–90, 90+ days from BillableEntry date). Rolled up to Customer × ProjectManager × Practice. The Controller's daily landing report — old WIP is uncollectible WIP.
DSO by Customer
Days Sales Outstanding per Customer over a rolling trailing-12-month window: average days from InvoiceDate to PaidAt, weighted by invoice Total. Surfaces slow-pay clients and the trend per Customer.
Billing Realization
Per Project per Period: ratio of BillAmount invoiced to standard rate-card value (i.e. Realization%) — captures the impact of negotiated overrides, NTE writedowns, and adjustments. Drills into per-line detail.
Invoice Approval Cycle Time
Mean and p90 elapsed days from Invoices.SubmittedAt to final ApprovedAt, sliced by Project, ProjectManager, Controller. Surfaces approval-loop bottlenecks.
Revenue vs. Billings
Per Project per RevRecPeriod: RecognizedRevenuePeriod vs. InvoicedToDate delta, with the resulting DeferredRevenue / RevenueInExcessOfBillings balance. The ASC 606 disclosure worksheet input.
Project Profitability
Per Project: invoiced revenue minus cost (resource cost from PM Time × cost rate + expense pass-through cost). Computed in a downstream warehouse against pm-time and fin-expenses cost feeds; this app surfaces the billing inputs and links out.
Dunning Effectiveness
Per Customer per reminder band: count of invoices, average days from first reminder to payment, percentage paid within 30 days post first reminder. Surfaces which clients respond to reminders and which need a phone call.
Write-Off Register
All WriteOffs in a trailing 12-month window with Invoice, Project, Customer, Amount, Reason, ApprovedBy. Reconciles to the BadDebtExpense GL account in fin-accounting. The audit-and-credit-policy report.
One connected workspace
Per Project: OpenWIP balance bucketed by aging band (0–30, 31–60, 61–90, 90+ days from BillableEntry date). Rolled up to Customer × ProjectManager × Practice. The Controller's daily landing report — old WIP is uncollectible WIP.
| Project | Rev Rec Period | Open WIP | Invoiced To Date | Aging0to30 |
|---|---|---|---|---|
| PRJ-1000 | RRP-1852 | 11,836.03 | 33,886.70 | 23,061.77 |
| PRJ-1859 | RRP-1933 | 9,531.16 | 9,516.76 | 10,284.45 |
| PRJ-2154 | RRP-5412 | 29,058.24 | 38,165.74 | 17,378.59 |
| PRJ-9704 | RRP-4616 | 17,834.17 | 22,460.08 | 24,790.81 |
- Provisional
- Final
- Project
- PRJ-1000
- RevRecPeriod
- RRP-1852
- OpenWIP
- 11,836.03
- InvoicedToDate
- 33,886.70
- Aging0to30
- 23,061.77
- Aging31to60
- 19,015.95
- Aging61to90
- 24,476.68
owner Project Manager
Go from the big picture to the details behind it. Open any record to see its status, owner and history.
Illustrative records. Connections follow the authored specification.
Controls and automation
System checks
time-import-from-pm-time — appEventTrigger on Timesheets.Status: Approved (cross-app from pm-time) → upserts BillableTimeEntries with snapshot bill rate.
expense-import-from-fin-expenses — appEventTrigger on ExpenseClaims.Status: Approved (cross-app from fin-expenses) → upserts BillableExpenses with markup applied.
monthly-billing-run — scheduleTrigger end-of-month → generates Draft Invoices per Project per BillingSchedules (FixedFee / Milestone) or Pending Billable Time + Expenses (T&M).
milestone-completion-triggers-invoice — appEventTrigger on ProjectMilestones.Status: Completed → generates milestone Draft Invoice.
wip-recompute — scheduleTrigger nightly 03:00 → recomputes WIPBalances per Project (Pending + Invoiced Billable Time + Expenses minus Invoiced minus WriteOffs minus WIPAdjustments) with aging buckets.
approval-routing — appEventTrigger on Invoices.Status: Submitted → resolves InvoiceApprovalRules, writes InvoiceApprovalSteps, routes ProjectManager → Controller (or per matched rule).
revenue-recognition-job — scheduleTrigger end-of-month → computes RevRecEntries per Project per RevRecMethod (PercentageOfCompletion / Milestone / SellThrough / RatableOverTime).
gl-post — appEventTrigger on Invoices.Status: Approved → builds Dr AR / Cr Revenue / Cr Tax + paired Dr Unbilled / Cr WIP, posts balanced JournalEntries to fin-accounting.
dunning-reminder — scheduleTrigger weekly Monday 07:00 → emails Customer billing contact + cc internal on past-due Invoices, classified by reminder band.
writedown-on-cap — appEventTrigger on BillableTimeEntries.record.updated (fires AFTER time-import-from-pm-time settles) where Project's NTECap reached → flips IsBillable: true → false with NonBillableReason: "NTE cap reached".
client-portal-publish — appEventTrigger on Invoices.Status: Sent → posts published Invoice to pm-client-portal's inbound feed, records returned PortalURL.
revrec-gl-post — appEventTrigger on RevRecEntries.record.updated where Status transitions to Approved → builds the JE (Dr Unbilled-Receivable or Cr Deferred-Revenue depending on RevRecMethod and signed difference between RecognizedRevenue and InvoicedToDate), posts to fin-accounting.JournalEntries with Source: AR, ReferenceType: Manual, ReferenceID: RevRecEntries.PeriodCode. Integrations: inbound from PM Time (approved Timesheets → BillableTimeEntries), Finance Expenses (approved billable ExpenseClaims → BillableExpenses), PM Projects (Projects, ProjectStages, ProjectMilestones), PM Resource (RateCards master), CRM Pipeline / Finance Accounting (Customers). Outbound to Finance Accounting (JournalEntries for invoice posting and rev-rec posting, with the returned JE record ID echoed back as Invoices.JournalEntry and RevRecEntries.JournalEntry), PM Client Portal (published Invoices), the document store (Invoice PDFs and JSON snapshots), and email (invoice notifications, approval requests, dunning reminders, RevRec Controller alerts). All amounts in US dollars; ASC 606 is the revenue-recognition framework.
Make it work your way.
Use Proto to configure this system for your business. Review fields, rules and approvals before releasing changes.
Previews contain illustrative data from the system specification.