Skip to main content Enter
ERP.AI Invoicing & Billing System

Invoicing & Billing System

Start now
Pricing Questions and answers Get started
Build with Proto

Modules

Clients and estimatesAgree the work and payment terms before creating an invoice. Invoice preparationPrepare invoices with clear lines, due dates and a preserved document history. Recurring billingManage retainers and repeat invoices from an explicit billing schedule.
Payments and reconciliationConnect customer receipts to invoices and check their actual payment outcome. Billable workBring approved expenses and recorded time into the right customer invoice. Collections and reportingFollow up on outstanding invoices with the right customer context.

Invoicing & Billing System

Start now
Pricing Questions and answers Get started
Build with Proto

Processes

Estimate to invoiceCarry the customer’s accepted scope, prices and tax treatment into a supported invoice. Recurring billing to collectionRun repeat billing on the agreed schedule and follow each invoice through confirmed collection.
Receipt to reconciliationSee what was billed, what has actually been collected and which balances still need follow-up. Billable work to invoiceTurn recorded time and reimbursable expenses into an invoice your customer can trace back to the work.

Invoicing & Billing System

Start now
Pricing Questions and answers Get started
Build with Proto

Industries

Professional servicesConsultancies and independent specialists billing agreed work and reimbursable expenses. Retainer businessesAgencies and service providers invoicing repeat commitments.
Field service businessesSmall service teams capturing billable time and expenses away from the office.

Invoicing & Billing System

Start now
Pricing Questions and answers Get started
Build with Proto

Reference

Roles and permissionsGive each person the records and decisions their work requires. Reports and analyticsRead operational and financial results with their source context. Data modelSee the records and references behind the product.
AI and integrationsConnect the services that own the related business results. ImplementationConfigure the system around your business records and responsibilities. Proto configuration guideUse Proto to configure and maintain the same product described on this website.

Invoicing & Billing System

Start now
Pricing Questions and answers Get started
Build with Proto
All systems
Modules
Clients and estimatesAgree the work and payment terms before creating an invoice.Invoice preparationPrepare invoices with clear lines, due dates and a preserved document history.Recurring billingManage retainers and repeat invoices from an explicit billing schedule.Payments and reconciliationConnect customer receipts to invoices and check their actual payment outcome.Billable workBring approved expenses and recorded time into the right customer invoice.Collections and reportingFollow up on outstanding invoices with the right customer context.
Processes
Estimate to invoiceCarry the customer’s accepted scope, prices and tax treatment into a supported invoice.Recurring billing to collectionRun repeat billing on the agreed schedule and follow each invoice through confirmed collection.Receipt to reconciliationSee what was billed, what has actually been collected and which balances still need follow-up.Billable work to invoiceTurn recorded time and reimbursable expenses into an invoice your customer can trace back to the work.
Industries
Professional servicesConsultancies and independent specialists billing agreed work and reimbursable expenses.Retainer businessesAgencies and service providers invoicing repeat commitments.Field service businessesSmall service teams capturing billable time and expenses away from the office.
Reference
Roles and permissionsGive each person the records and decisions their work requires.Reports and analyticsRead operational and financial results with their source context.Data modelSee the records and references behind the product.AI and integrationsConnect the services that own the related business results.ImplementationConfigure the system around your business records and responsibilities.Proto configuration guideUse Proto to configure and maintain the same product described on this website.
Sign in
Sign in Start now
Invoicing & Billing System References
Data model3 of 6
  • Roles and permissions1 of 6
  • Reports and analytics2 of 6
  • Data model3 of 6
  • AI and integrations4 of 6
  • Implementation5 of 6
  • Proto configuration guide6 of 6

Data model

See the records and references behind the product.

17 tables · 28 relationships

Data model 17 tables
mastertransactionline itemfinance Estimates.Client → Clients Estimates.ConvertedToInvoice → Invoices RecurringSchedules.Client → Clients RecurringSchedules.LastInvoice → Invoices Reminders.Invoice → Invoices Expenses.Client → Clients Expenses.BilledOnInvoice → Invoices TimeEntries.Client → Clients TimeEntries.Item → Items TimeEntries.BilledOnInvoice → Invoices TaxForms1099Sent.Client → Clients EstimateLines.Estimate → Estimates EstimateLines.Item → Items EstimateLines.TaxRate → SalesTaxRates RecurringScheduleLines.Schedule → RecurringSchedules RecurringScheduleLines.Item → Items Invoices.Client → Clients Invoices.FromEstimate → Estimates Invoices.FromRecurringSchedule → RecurringSchedules InvoiceLines.Invoice → Invoices InvoiceLines.Item → Items InvoiceLines.TaxRate → SalesTaxRates InvoiceLines.FromExpense → Expenses InvoiceLines.FromTimeEntry → TimeEntries PaymentLinks.Invoice → Invoices Payments.Invoice → Invoices Payments.Client → Clients BusinessProfilemasterZipCodeBusinessNameLogoURL ClientsmasterClientNumberNameContactPersonName ItemsmasterItemNumberNameDescription SalesTaxRatesmasterZipCodeStateUSRateName EstimatestransactionEstimateNumberStatusClient RecurringSchedulestransactionScheduleNumberStatusClient ReminderstransactionStatusInvoiceReminderType ExpensestransactionExpenseNumberStatusClient TimeEntriestransactionEntryNumberStatusClient TaxForms1099SenttransactionFormNumberStatusClient AuditEventstransactionAuditNumberStatusWorkspaceId EstimateLineslineEstimateItemTaxRate RecurringScheduleLineslineScheduleItemSequence InvoicestransactionInvoiceNumberStatusClient InvoiceLineslineInvoiceItemTaxRate PaymentLinkstransactionStatusInvoiceProvider PaymentstransactionPaymentNumberStatusInvoice
Data modelTable names and relationships

How the model is organised

Business setup

BusinessProfile, Clients, Items, SalesTaxRates. Business identities, classifications and reviewed defaults provide stable references for prices and customer documents.

  • BusinessProfile
  • Clients
  • Items
  • SalesTaxRates

Billing documents

Estimates, EstimateLines, Invoices, InvoiceLines. Documents preserve dates, amounts, customer decisions and issued versions. Detail records retain their owning document and cannot move across unrelated estimates or invoices.

  • Estimates
  • EstimateLines
  • Invoices
  • InvoiceLines

Recurring work and receipts

RecurringSchedules, RecurringScheduleLines, PaymentLinks, Payments, Reminders, Expenses, TimeEntries. Schedules retain each billing occurrence, billable work remains reserved once, and verified receipts explain the collectible invoice balance.

  • RecurringSchedules
  • RecurringScheduleLines
  • PaymentLinks
  • Payments
  • Reminders
  • Expenses
  • TimeEntries

Reporting and evidence

TaxForms1099Sent, AuditEvents. Reviewed outgoing-payment workpapers remain separate from customer receipts. Immutable audit events explain protected changes and external acknowledgments.

  • TaxForms1099Sent
  • AuditEvents

Keys and references

Preserve canonical record identifiers, source-system identifiers and the workspace or legal-entity scope. A readable name is not a unique identity. Validate every referenced record before saving a transaction. Derived monetary fields are server-computed; imports cannot bypass that calculation or change issued history.

Migration order

  1. 1 Confirm scope

    Ends with: Agree entities, currencies, responsible people and imported opening positions.

  2. 2 Load masters

    Ends with: Resolve duplicate identities and reviewed policy defaults.

  3. 3 Load documents

    Ends with: Preserve source references, line ownership and supporting files.

  4. 4 Reconcile history

    Ends with: Compare balances and outcomes before enabling automated work.

  5. 5 Verify access

    Ends with: Test permitted and denied actions using actual assigned roles.

Tables

17 tables
BusinessProfileSingle-row configuration for the small business itself. Carriesmaster
FieldTypeRequiredDetails
BusinessNametextyesLegal or DBA name shown on every Invoice
LogoURLtextShown at top of invoice PDF
FederalTaxIDtextyesEIN or SSN — masked except Owner / Admin
BusinessTypeselectyesSoleProprietor, LLC, SCorp, CCorp, Partnership, Other
StreetAddresstextyes
Citytextyes
StateUStextyesTwo-letter US state code
ZipCodetextyes
Phonetext
EmailtextyesDefault From address on invoice email
Websitetext
BankNametext
BankRoutingNumbertextUS — ABA — masked except Owner / Admin
BankAccountNumbertextMasked except Owner / Admin
StripeAccountIDtextWhen connected to Stripe
SquareAccountIDtextWhen connected to Square
DefaultPaymentTermsDaysnumberyese.g. 0, 7, 14, 30
DefaultLateFeePercentnumberOptional flat fee percent applied via reminder
InvoiceNumberPrefixtexte.g. INV — concatenated with sequence
ClientsThe customer record — kept light. Email is the natural key formaster
FieldTypeRequiredDetails
ClientNumbertextyes
Nametextyes
ContactPersonNametextWhen Client is a company
EmailtextyesNatural key — also the invoice send-to address
Phonetext
BillingStreettext
BillingCitytext
BillingStateUStextTwo-letter US state — drives sales-tax auto-calc
BillingZipCodetextDrives sales-tax auto-calc
DefaultPaymentTermsDaysnumberOverrides BusinessProfile default when set
NotestextFree-text scratchpad
YTDPaidAmountdecimalReviewed outgoing contractor-payment snapshot imported from accounting; never derived from incoming Payments
Issue1099booleanMarks an externally reviewed payee workpaper requirement; not customer-income reporting
Activebooleanyes
ItemsReusable line-item catalog. Items can be services (priced permaster
FieldTypeRequiredDetails
ItemNumbertextyes
NametextyesShown on the invoice line
DescriptiontextOptional longer description
DefaultRatedecimalyes
DefaultUnitselectyesHour, Day, Each, Project
IsServicebooleanyesTrue for service / time-based, false for goods
IsTaxablebooleanyesDrives sales-tax auto-calc on the line
Activebooleanyes
SalesTaxRatesUS sales-tax rate per state plus optional ZIP override. Refreshedmaster
FieldTypeRequiredDetails
StateUStextyesTwo-letter state code
ZipCodetextNull = state default rate
RateNametextyese.g. "CA Sales Tax", "CA — San Francisco"
TotalRatenumberyesFractional combined state + local rate, e.g. 0.0875 means 8.75 percent; reject percent-form 8.75 as an invalid fraction
StateRatenumber
LocalRatenumber
EffectiveFromdateyes
EffectiveTodate
SourceselectyesTaxJar, Avalara, Manual
Activebooleanyes
EstimatesPre-invoice quote sent to a Client. Draft is sent as a sealed document revision. Sent may become Viewed; Sent or Viewed may become Approved, Declined or Expired. Only Approved can become Converted. Declined, Expired and Converted are terminal for that offer. An accepted offer stays Approved after its response deadline; it does not expire while waiting for conversion. Conversion copies the accepted snapshot into exactly one invoice. Changed terms after acceptance require a new linked estimate and a new customer decision.transaction
FieldTypeRequiredDetails
EstimateNumbertextyes
Clientreferenceyes→ Clients
IssueDatedateyes
ExpiryDatedateResponse deadline; expiry applies only while Status is Sent or Viewed
Subtotaldecimalyesfx: SUM(EstimateLines.LineSubtotal)
TaxTotaldecimalyesfx: SUM(EstimateLines.LineTax)
Totaldecimalyesfx: Subtotal + TaxTotal
StatusselectyesDraft, Sent, Viewed, Approved, Declined, Converted, Expired
SentAtdate
ViewedAtdateStamped by tracking pixel on first email open
ApprovedAtdatetimeServer timestamp of the evidenced acceptance; null before acceptance
ConvertedToInvoicereference→ Invoices (set when converted)
NotestextPublic notes — appear on the estimate PDF
InternalMemotextPrivate — not on the PDF
SupersedesEstimatereference→ Estimates; new offer replacing prior terms without rewriting its decision
SentRevisionnumberServer revision bound to the current sealed offer and recipient token
SentSnapshottextSealed document values, line tax inputs, client, terms, currency and PDF identity at send
AcceptedRevisionnumberExact SentRevision accepted; set only by a valid customer decision
AcceptedSnapshottextImmutable copy of the accepted SentSnapshot; conversion uses it without recalculation
DecisionSourceselectSignedRecipient, OfflineRecorded
DecisionActortextVerified recipient identity or authorized staff principal recording the evidenced decision
DecisionEvidenceattachmentRequired retained customer evidence for OfflineRecorded acceptance or decline
RecipientTokenHashtextHashed single-document token bound to client, SentRevision and permitted decision
TokenExpiresAtdatetimeRecipient decision token expiry; never revives an expired offer
EstimateLinesPer-line detail on an Estimate. Snapshot item description, rate, taxable decision and the resolved fractional tax rate at line creation. Draft changes recalculate under the reviewed inputs; sending seals those values with the document. Later catalogue or tax-rate edits cannot recalculate a sent or accepted offer. Line item of Estimates.line item
FieldTypeRequiredDetails
Estimatereferenceyes→ Estimates
SequencenumberyesRender order
Itemreference→ Items (null when ad-hoc line)
DescriptiontextyesSnapshot from Item.Name + Item.Description, editable
Quantitynumberyes
UnitselectyesHour, Day, Each, Project
Ratedecimalyes
LineSubtotaldecimalyesfx: Quantity * Rate
TaxRatereference→ SalesTaxRates (resolved from Client billing state + ZIP)
LineTaxdecimalyesfx: LineSubtotal * TaxRateSnapshot when TaxableSnapshot else 0; use configured currency rounding
LineTotaldecimalyesfx: LineSubtotal + LineTax
TaxableSnapshotbooleanyesReviewed taxable decision copied from the item or explicitly set for an ad-hoc line
TaxRateSnapshotdecimalyesFractional rate snapshot: 0.10 means ten percent; zero when not taxable
TaxRuleVersiontextyesReviewed source/effective rule identity used for the rate and taxable decision
InvoicesThe bill the Client owes. Draft becomes Sent after validation and sealing; the first permitted view may mark an unpaid Sent document Viewed. Recognized receipts derive PartialPaid or Paid from the issued balance. An unpaid Sent, Viewed or PartialPaid invoice becomes Overdue only after its due date. Paid never becomes Overdue merely as time passes. An evidenced refund or reversal can reopen a positive balance into PartialPaid or Overdue. An authorized void produces terminal Voided; viewing, reminders or delayed callbacks cannot undo it.transaction
FieldTypeRequiredDetails
InvoiceNumbertextyesAuto-numbered with BusinessProfile.InvoiceNumberPrefix
Clientreferenceyes→ Clients
FromEstimatereference→ Estimates (set when converted)
FromRecurringSchedulereference→ RecurringSchedules (set when generated)
IssueDatedateyes
DueDatedateyesIssueDate + Client.DefaultPaymentTermsDays (or BusinessProfile default)
Subtotaldecimalyesfx: SUM(InvoiceLines.LineTotal) − SUM(InvoiceLines.LineTax)
TaxTotaldecimalyesfx: SUM(InvoiceLines.LineTax)
Totaldecimalyesfx: Subtotal + TaxTotal
AmountPaiddecimalyesServer computed: confirmed cleared gross receipts minus confirmed refunds; exclude pending, failed and disputed amounts
AmountDuedecimalyesServer computed: issued Total less recognized net receipts; retain overpayments separately
StatusselectyesDraft, Sent, Viewed, PartialPaid, Paid, Overdue, Voided
SentAtdate
ViewedAtdate
PaidAtdateStamped when AmountDue reaches 0
RenderedPDFURLtextFrozen PDF snapshot at Send
LineSnapshottextFrozen JSON of lines at Send for audit
PublicNotestextShown on the invoice PDF
InternalMemotextPrivate
CreatedBytextyesServer-resolved staff principal; immutable creator
InvoiceLinesPer-line detail on an Invoice. Snapshots Item info at line Line item of Invoices.line item
FieldTypeRequiredDetails
Invoicereferenceyes→ Invoices
SequencenumberyesRender order
Itemreference→ Items (null when ad-hoc)
DescriptiontextyesSnapshot from Item, editable
Quantitynumberyes
UnitselectyesHour, Day, Each, Project
Ratedecimalyes
LineSubtotaldecimalyesfx: Quantity * Rate
TaxRatereference→ SalesTaxRates
LineTaxdecimalyesfx: LineSubtotal * TaxRateSnapshot when TaxableSnapshot else 0; use configured currency rounding
LineTotaldecimalyesfx: LineSubtotal + LineTax
FromExpensereference→ Expenses (set when line was rebilled from a billable Expense)
FromTimeEntryreference→ TimeEntries (set when line was rebilled from a billable TimeEntry)
TaxableSnapshotbooleanyesReviewed taxable decision copied from the item or explicitly set for an ad-hoc line
TaxRateSnapshotdecimalyesFractional rate snapshot: 0.10 means ten percent; zero when not taxable
TaxRuleVersiontextyesReviewed source/effective rule identity used for the rate and taxable decision
RecurringSchedulesAuto-generates an Invoice on a fixed cadence. Thetransaction
FieldTypeRequiredDetails
ScheduleNumbertextyes
Clientreferenceyes→ Clients
Nametextyese.g. "Monthly Retainer — Acme Co"
FrequencyselectyesWeekly, BiWeekly, Monthly, Quarterly, Annual
StartDatedateyes
EndDatedateNull = open-ended
NextRunDatedateyesNext IssueDate to materialize
OccurrencesRemainingnumberOptional — null = unlimited
AutoSendbooleanyesIf true, fires invoice-send-via-email on generation
AutoChargeOnFilebooleanIf true, attempts a charge against the saved card on file via Stripe
StatusselectyesActive, Paused, Ended, Cancelled
LastRunAtdate
LastInvoicereference→ Invoices (most-recent generated)
RecurringScheduleLinesPer-line template detail on a RecurringSchedule. The Line item of RecurringSchedules.line item
FieldTypeRequiredDetails
Schedulereferenceyes→ RecurringSchedules
Sequencenumberyes
Itemreferenceyes→ Items
Descriptiontext
Quantitynumberyes
UnitPricedecimalyes
TaxRatenumber
PaymentLinksTokenized checkout URL per Invoice, generated by thetransaction
FieldTypeRequiredDetails
Invoicereferenceyes→ Invoices
ProviderselectyesStripe, Square
TokenizedURLtextyesHosted checkout URL — embedded in invoice email
ProcessorSessionIDtextReturned by Stripe / Square for webhook correlation
AmountAtCreationdecimalyesSnapshot of Invoice.AmountDue at link creation
ExpiresAtdate
StatusselectyesActive, Used, Expired, Cancelled
CreatedAtdateyes
UsedAtdateStamped when a successful Payment lands
PaymentsRecords of money received against an Invoice. Webhook-fed fortransaction
FieldTypeRequiredDetails
PaymentNumbertextyes
Invoicereferenceyes→ Invoices
Clientreferenceyes→ Clients (snapshot from Invoice)
MethodselectyesCard, ACH, Check, Cash, Other
Amountdecimalyes
ReceivedAtdateyes
ProcessorReftextStripe / Square charge ID — null for Check / Cash
ProcessorFeedecimalStripe / Square fee — for net-deposit reconciliation
NetDepositdecimalfx: Amount − ProcessorFee
StatusselectyesPending, Cleared, Refunded, Disputed, Failed
RefundedAmountdecimal
Memotexte.g. check number for Method = Check
RemindersScheduled and sent late-payment reminders against an Invoice.transaction
FieldTypeRequiredDetails
Invoicereferenceyes→ Invoices
ReminderTypeselectyesDueSoon, OverdueDay7, OverdueDay14, OverdueDay30, Manual
ScheduledAtdateyes
SentAtdateNull while pending
StatusselectyesScheduled, Sent, Skipped, Cancelled
SkipReasonselectInvoicePaid, InvoiceVoided, ManualSkip
ChannelselectyesEmail
MessageBodytextSnapshot of the rendered reminder text
ExpensesLightweight expense capture — a vendor, an amount, a category,transaction
FieldTypeRequiredDetails
ExpenseNumbertextyes
ExpenseDatedateyes
Vendortextyes
CategoryselectyesTravel, Meals, Software, Supplies, Equipment, Mileage, Subcontractor, Other
Amountdecimalyes
ReceiptPhotoURLtextPhone-snapped photo
BillableToClientbooleanyes
Clientreference→ Clients (required when BillableToClient = true)
MarkupPercentnumberOptional rebill markup
StatusselectyesRecorded, Billed, NotBillable
BilledOnInvoicereference→ Invoices (set when this Expense was added to an Invoice)
Notestext
TimeEntriesLightweight billable hours capture. When `Billable = true` andtransaction
FieldTypeRequiredDetails
EntryNumbertextyes
WorkDatedateyes
Clientreference→ Clients (required when Billable = true)
Itemreference→ Items (used to default Rate and Description)
Descriptiontextyes
Hoursnumberyes
RatedecimalDefaults from Item.DefaultRate when Item set
Amountdecimalfx: Hours * Rate
Billablebooleanyes
StatusselectyesRecorded, Billed, NotBillable
BilledOnInvoicereference→ Invoices
TaxForms1099SentYear-end 1099-MISC forms issued by the user (the small business)transaction
FieldTypeRequiredDetails
FormNumbertextyes
TaxYearnumberyes
Clientreferenceyes→ Clients (the contractor receiving the 1099)
FormTypeselectyes1099-MISC, 1099-NEC
RecipientNametextyesSnapshot from Client.Name
RecipientTaxIDtextContractor's EIN or SSN — collected via W-9 intake outside this app
RecipientAddresstextyesSnapshot from Client billing address
AmountReportabledecimalyesReviewed outgoing-payment amount from accounting; never an incoming invoice-payment rollup
FederalThresholddecimalyesSnapshot of the IRS threshold used
StatusselectyesDraft, Issued, Filed, Corrected, Voided
GeneratedAtdate
IssuedToRecipientAtdate
FiledWithIRSAtdate
FormPDFURLtextFrozen 1099 PDF
EFileConfirmationtextReturned by IRS filing partner
SourceEvidenceattachmentyesVerified outgoing-payments reconciliation and current form-type review
RuleVersiontextyesEffective filing-year rule decision and source reference
AuditEventsAppend-only business decisions, denied operations and completed effects.transaction
FieldTypeRequiredDetails
AuditNumbertextyesImmutable event identifier
WorkspaceIdtextyesServer-resolved tenant scope
RecordTypetextyes
RecordIdtextyes
Actiontextyes
ActorPrincipaltextyesAuthenticated actor or verified external document identity
OccurredAtdatetimeyesServer timestamp
OperationKeytextyesStable command identity
ResultRevisionnumberyesResulting version or unchanged revision for rejected operations
StatusselectyesSucceeded, Rejected, Failed
DetailslongtextRedacted reason and before/after references; no secrets
ERP•AI workspace

Start now Invoicing & Billing System

Create your ERP.AI account and get started with Proto.

Start now Download agent
Previous · reference 2 of 6Reports and analyticsNext · reference 4 of 6AI and integrations

Customize Invoicing & Billing System. With Proto, your desktop AI agent.

Ask Proto to help you customize Invoicing & Billing System.

Customize
Invoicing & Billing System.
Ask: “Adapt Clients and estimates.”
ProtoYour desktop AI agent
Download nowFree install · ~1 GB · AI usage extra
macOSWindowsLinux

Bring your first idea to Proto.

Keep this page open while you install Proto. Connect your account and model, then paste this into a new chat.

AI usage is paid separately. You can edit the prompt before copying.

ERP.AI

Business apps and the Proto desktop agent.

  • Business Apps
  • Proto
  • Workflows
  • Headless SaaS
  • Enterprise
  • Pricing
  • Contact
  • Terms of Service
  • Privacy Policy
  • Cookie Policy
© 2026 ERP•AI. All rights reserved.
System status

Your Privacy, Your Choice

We use essential cookies to run the site and optional cookies for features, analytics, and relevant content. See Cookie policy

Manage Your Cookie Preferences

We use cookies to enhance your experience, analyze site traffic, and serve relevant content. By clicking "Accept All," you agree to our use of cookies. You can customize your preferences at any time.

Learn more about how we use cookies

These cookies are required for the website to function properly. They ensure security, enable basic features like page navigation, and store user session data. You cannot disable these cookies.

These cookies enable additional features that enhance your experience, such as live chat, video playback, personalized content recommendations, and remembering user preferences.

These cookies help us understand how visitors interact with our site by collecting anonymous usage data. This allows us to measure performance, detect issues, and continuously improve the user experience.

These cookies allow us and advertising partners, including X, to deliver ads tailored to your interests. They track browsing habits across sites to provide relevant advertising and measure ad effectiveness.