Prepaid Schedule
Extracts prepaid items from invoices and builds amortization schedules. Initial extract is best in Cowork (PDF/image invoices in a folder). Ongoing schedule maintenance is best in the Excel add-in (existing workbook).
Required inputs
For new items:
- Invoice files (PDF, PNG, or structured CSV/XLSX with invoice fields)
- Period of recognition — the close period the items are being booked into (e.g.,
2026-04)
For schedule maintenance:
- Existing prepaid workbook with the standard tabs (
Schedule, Inputs, Summary)
Workflow — new item extraction
- Extract invoice fields. Run
scripts/extractinvoicefields.py. For each invoice, extract:
- vendor name, invoice number, invoice date - amount (USD) - service start, service end (or service period descriptor) - category (subscription, insurance, rent, license, etc.) - confidence per field (HIGH / MEDIUM / LOW)
Fields the OCR cannot extract with confidence are blank and flagged for preparer. Don't guess service periods. If the invoice says "annual subscription" with no dates, mark serviceperioddescriptor = "annual" with MEDIUM confidence and let downstream logic infer 12 months (still MEDIUM).
- Classify treatment. For each item:
- EXPENSENOW — service period closes in current period or earlier, OR amount < materiality.prepaidcapitalizethreshold (default $1,000) - PREPAID — service period extends > materiality.prepaidmin_months past period close - REVIEW — service period ambiguous, vendor unfamiliar, or amount unusually large
- Build the amortization schedule. Run
scripts/build_amortization.py. The output is formulas, not values — schedule cells reference the inputs tab so changes propagate. For each PREPAID item:
- Capitalize full amount on service start month to account 1220 - Prepaid Software/Subscriptions (or the right prepaid account per category) - Amortize =amount / months each month into the matching expense account - Round the final month to absorb cumulative rounding so the schedule fully amortizes
- Generate JEs.
- Initial recognition (one JE per item): debit 1220, credit 2010 AP (or 1010 Cash if cash basis), full amount. - First-month amortization (consolidated across items by expense account): debit expense, credit 1220, monthly amount. - Both JE sets go to JEs_Proposed for je-review.
- Build summary views.
- By month — total prepaid balance roll forward, amortization, ending balance - By vendor — total open prepaid by vendor - By category — total amortization by expense account for the current period
Workflow — schedule maintenance
For an existing workbook:
- Add new items to
Inputs tab.
- Recalculate the
Schedule tab — formulas pick up new rows automatically if the schedule uses dynamic ranges or table references. If hardcoded ranges, extend them.
- Verify roll-forward: prior period ending balance + additions − amortization = current period ending balance.
- Generate the current month's amortization JE.
Output workbook tabs
Cover — period, preparer, status
Inputs — one row per prepaid item with all extracted fields (this is the data tab; everything else references it)
Schedule — month-by-month amortization, formulas referencing Inputs
SummaryByMonth — totals roll-forward
SummaryByVendor
JEs_Proposed — recognition and amortization JEs
Evidence — every Inputs row links back to its source invoice file and page
Review_Notes — items flagged REVIEW, MEDIUM/LOW confidence extractions, vendor not previously seen
Invariants
- Schedule cells contain formulas, never computed values pasted as numbers. A reviewer changing an amount or term must see all downstream values update.
- Service period must be derivable from source. If only an invoice date is present with no service period or descriptor, the item is
REVIEW.
- Every Inputs row has an Evidence row pointing to the source invoice file and page.
- The amortization fully resolves to zero by the service end month — rounding handled in the final month.
When to say "I don't know"
- Invoice has no clear service period and no period descriptor →
REVIEW, ask the preparer.
- Vendor name is unreadable (OCR low confidence) →
REVIEW, ask the preparer to confirm.
- Amount is materially different from prior invoices from the same vendor → flag for confirmation before adding to schedule.