Master records
Contacts, Products, Employees, ChartOfAccounts, TaxRates, CompanySettings and LeaveBalances provide reviewed identity and policy.
Understand the records and their accounting boundaries.
27 tables · 80 relationships
Contacts, Products, Employees, ChartOfAccounts, TaxRates, CompanySettings and LeaveBalances provide reviewed identity and policy.
Leads, Opportunities and Activities retain sales ownership; Invoices and InvoiceItems hold approved billing.
PaymentsReceived and PaymentAllocations separate cash from its applications. PaymentsMade targets one bill or expense; PayrollPayments targets one approved statement.
JournalEntries and JournalEntryLines retain unique source events; AccountingPeriods controls the posting window; BankStatementLines holds reconciliation evidence.
PayrollRuns, PayStatements, PayStatementLines, LeaveRequests and ExpenseClaims retain scoped employee work and review.
One legal entity owns the workspace. Use stable business numbers and explicit parent references, plus authenticated employee mappings. Preserve invoice and settlement currency snapshots. A source event or retry key cannot create duplicate journals, payments or lead conversions. Posted accounting and approved evidence keep their original revisions; corrections retain a new linked history.
| Field | Type | Required | Details |
|---|---|---|---|
ContactNumber | text | yes | |
Name | text | yes | |
Type | select | yes | Customer, Vendor, Both, SalesContact |
Email | text | ||
Phone | text | ||
BillingAddress | text | ||
PaymentTerms | select | Prepaid, Net7, Net15, Net30, Net45 | |
TaxID | text | ||
Active | boolean | yes | |
SalesOwner | reference | → Employees; assigned Sales Rep access, no unrestricted customer directory |
| Field | Type | Required | Details |
|---|---|---|---|
SKU | text | yes | |
Name | text | yes | |
Type | select | yes | Good, Service |
UnitPrice | decimal | yes | Default price |
DefaultTaxRate | reference | → TaxRates | |
RevenueAccount | reference | yes | → ChartOfAccounts |
Active | boolean | yes |
| Field | Type | Required | Details |
|---|---|---|---|
EmployeeID | text | yes | |
FullName | text | yes | |
Email | text | yes | |
Role | select | yes | Owner, Bookkeeper, SalesRep, HR, Employee, Admin |
HireDate | date | yes | |
TerminationDate | date | ||
JobTitle | text | ||
Manager | reference | → Employees (self) | |
BaseSalary | decimal | Restricted — HR/Owner only | |
PayFrequency | select | yes | Monthly, SemiMonthly, BiWeekly, Weekly |
OnboardingStatus | select | yes | Pending, InProgress, Complete |
Active | boolean | yes | |
AuthSubject | text | yes | Unique authenticated user identity; immutable mapping, never trust client-supplied EmployeeID |
EmploymentStatus | select | yes | Active, OnLeave, Terminated |
WorkCalendar | longtext | yes | Versioned working days, holidays, timezone and leave-day policy |
PayBasisRevision | text | Effective compensation/provider setup revision; restricted to HR / Payroll and Owner |
| Field | Type | Required | Details |
|---|---|---|---|
AccountCode | text | yes | |
AccountName | text | yes | |
AccountType | select | yes | Asset, Liability, Equity, Revenue, Expense |
ParentAccount | reference | → ChartOfAccounts (self) | |
NormalBalance | select | yes | Debit, Credit |
Active | boolean | yes | |
IsCashAccount | boolean | yes | Explicit bank/cash classification; do not infer from account name |
Currency | text | yes | Account currency; native posting uses company home currency |
CurrentBalance | decimal | Derived from posted journal lines at the selected cutoff, never manually edited |
| Field | Type | Required | Details |
|---|---|---|---|
Code | text | yes | |
Name | text | yes | |
Rate | number | yes | Percentage, e.g. 8.875 |
Direction | select | yes | Sales, Purchase, Both |
GLAccount | reference | yes | → ChartOfAccounts |
Active | boolean | yes | |
EffectiveFrom | date | yes | Customer-approved effective start |
EffectiveTo | date | Optional end; no overlapping code periods | |
Recoverability | select | yes | NotApplicable, Recoverable, Nonrecoverable |
RuleRevision | text | yes | Reviewed jurisdiction, rounding and posting basis; not a tax engine |
| Field | Type | Required | Details |
|---|---|---|---|
InvoiceNumber | text | yes | |
Customer | reference | yes | → Contacts (Type IN Customer, Both) |
InvoiceDate | date | yes | |
DueDate | date | yes | |
Status | select | yes | Draft, PendingApproval, Approved, Issued, PartiallyPaid, Paid, Reversed |
Subtotal | formula | yes | fx: SUM(InvoiceItems.LineTotal) |
TaxTotal | formula | yes | fx: SUM(InvoiceItems.TaxAmount) |
TotalAmount | formula | yes | fx: Subtotal + TaxTotal |
AmountPaid | decimal | yes | Confirmed nonreversed PaymentAllocations in invoice currency; preserve historical applications |
AmountOutstanding | formula | yes | fx: TotalAmount − AmountPaid |
Notes | text | ||
SalesOwner | reference | → Employees; retained customer assignment for Sales Rep read scope | |
Opportunity | reference | → Opportunities; optional exact won opportunity, no automatic revenue from winning | |
Currency | text | yes | Default company home currency |
ExchangeRate | decimal | yes | Home per invoice-currency unit; 1 for home currency; approved rate/source/date snapshot |
Revision | number | yes | Submitted line, tax and customer revision; changes invalidate approval |
PreparedBy | reference | yes | → Employees |
AssignedApprover | reference | yes | → Employees; Owner, distinct from preparer |
ApprovedBy | reference | → Employees; authenticated Owner decision | |
ApprovedAt | datetime | Exact revision and line/tax snapshot | |
PostedJournal | reference | → JournalEntries; unique source event, balanced posting before Issued | |
DeliveryStatus | select | yes | NotSent, Pending, Sent, Failed |
DaysOverdue | number | Derived from due date and positive outstanding amount; payment status retained |
| Field | Type | Required | Details |
|---|---|---|---|
Product | reference | → Products | |
Description | text | yes | |
Quantity | number | yes | |
UnitPrice | decimal | yes | |
LineTotal | formula | yes | fx: Quantity × UnitPrice |
TaxRate | reference | → TaxRates | |
TaxAmount | formula | yes | fx: ROUND(LineTotal × TaxRatePercent / 100, company currency precision) |
Parent | reference | yes | → Invoices |
LineNumber | number | yes | Unique within Parent |
RevenueAccount | reference | yes | → ChartOfAccounts; retained posting account |
TaxRatePercent | decimal | yes | Effective rate snapshot; later TaxRates edits do not reprice issued invoices |
TaxRuleSnapshot | longtext | yes | Jurisdiction, code, account, rounding, exemptions and revision |
| Field | Type | Required | Details |
|---|---|---|---|
BillNumber | text | yes | |
Vendor | reference | yes | → Contacts (Type IN Vendor, Both) |
VendorInvoiceNumber | text | yes | Vendor's own number |
BillDate | date | yes | |
DueDate | date | yes | |
Status | select | yes | Draft, PendingApproval, Approved, PartiallyPaid, Paid, Void |
Subtotal | formula | yes | fx: SUM(BillItems.LineTotal) |
TaxTotal | formula | yes | fx: SUM(BillItems.TaxAmount) |
TotalAmount | formula | yes | fx: Subtotal + TaxTotal |
AmountPaid | decimal | yes | Confirmed nonreversed payments applied to this bill only |
AmountOutstanding | formula | yes | fx: TotalAmount − AmountPaid |
ApprovedBy | reference | → Employees | |
Currency | text | yes | Home currency by default |
ExchangeRate | decimal | yes | Approved home-currency rate snapshot; 1 for home currency |
PreparedBy | reference | yes | → Employees |
AssignedApprover | reference | → Employees; Owner for above-threshold decisions, distinct from preparer | |
Revision | number | yes | Exact document, line and policy basis |
ApprovalBasis | longtext | yes | Effective home-currency threshold, evaluated amount and automatic/manual route |
ApprovedAt | datetime | Manual decision only; automatic policy route retains system event | |
PostedJournal | reference | → JournalEntries; unique approved bill revision posting | |
Evidence | attachment | yes | Retained supplier document and content hash |
| Field | Type | Required | Details |
|---|---|---|---|
Description | text | yes | |
Quantity | number | yes | |
UnitCost | decimal | yes | |
LineTotal | formula | yes | fx: Quantity × UnitCost |
ExpenseAccount | reference | yes | → ChartOfAccounts |
TaxRate | reference | → TaxRates | |
TaxAmount | formula | yes | fx: ROUND(LineTotal × TaxRatePercent / 100, company currency precision) |
Parent | reference | yes | → Bills |
LineNumber | number | yes | Unique within Parent |
TaxRatePercent | decimal | yes | Approved effective rate snapshot |
TaxRuleSnapshot | longtext | yes | Recoverable tax account or nonrecoverable expense treatment and rounding |
| Field | Type | Required | Details |
|---|---|---|---|
PaymentNumber | text | yes | |
Customer | reference | yes | → Contacts |
PaymentDate | date | yes | |
Method | select | yes | ACH, Wire, Check, Card, Cash, Other |
Amount | decimal | yes | |
BankAccount | reference | yes | → ChartOfAccounts (bank GL account) |
UnappliedAmount | decimal | yes | Confirmed amount less active allocations; never negative |
Status | select | yes | Pending, Confirmed, PartiallyApplied, Applied, Failed, Reversed |
Reference | text | Remittance reference | |
Currency | text | yes | Receipt currency |
ExchangeRate | decimal | yes | Verified settlement rate snapshot |
SourceKey | text | yes | Unique provider/account/transaction identity; callbacks and imports deduplicate |
ConfirmedAt | datetime | Actual authenticated settlement or recorded bank evidence | |
ConfirmationEvidence | longtext | Amount, currency, recipient, source and bank reference matched | |
PostedJournal | reference | → JournalEntries; settled receipt to unapplied customer liability, then allocation transfers to AR |
| Field | Type | Required | Details |
|---|---|---|---|
PaymentNumber | text | yes | |
Vendor | reference | → Contacts; required for bill target only | |
PaymentDate | date | yes | |
Method | select | yes | ACH, Wire, Check, Card |
Amount | decimal | yes | |
BankAccount | reference | yes | → ChartOfAccounts |
AppliedToBill | reference | → Bills | |
Status | select | yes | Scheduled, PendingApproval, Approved, Pending, Confirmed, Failed, Cancelled, Reversed |
Reference | text | Check / ACH trace | |
Employee | reference | → Employees; required for expense target only | |
ExpenseClaim | reference | → ExpenseClaims; exactly one target: AppliedToBill or ExpenseClaim | |
Currency | text | yes | Target currency; reject unmatched currency or retain explicit reviewed conversion |
ExchangeRate | decimal | yes | Settlement basis and home-currency amount |
PreparedBy | reference | yes | → Employees; Bookkeeper |
AssignedApprover | reference | yes | → Employees; Owner distinct from preparer and claimant |
ApprovedBy | reference | → Employees; exact payee/amount/bank/revision decision | |
ApprovedAt | datetime | Invalidate on material changes | |
RequestKey | text | yes | Unique stable payout identity; reserve target balance while pending |
ConfirmationEvidence | longtext | Authenticated settled amount/payee/reference, not a request acknowledgment | |
ConfirmedAt | datetime | Only actual settlement advances paid balance | |
PostedJournal | reference | → JournalEntries; settlement or reversal event posted once | |
BeneficiaryName | text | yes | Retained authorized vendor or employee payee display name; target identity remains the corresponding reference |
| Field | Type | Required | Details |
|---|---|---|---|
JournalEntryNumber | text | yes | |
Date | date | yes | |
Description | text | yes | |
Source | select | yes | Manual, AR, AP, Payroll, Bank, Expense |
Status | select | yes | Draft, PendingApproval, Approved, Posted, Reversed |
TotalDebit | formula | yes | fx: SUM(JournalEntryLines.Debit) |
TotalCredit | formula | yes | fx: SUM(JournalEntryLines.Credit) |
PreparedBy | reference | yes | → Employees |
PostedAt | date | ||
Period | reference | yes | → AccountingPeriods; must be Open at posting time |
SourceKey | text | yes | Unique source type/record/revision/event key, including reversal identity |
Currency | text | yes | Company home currency for balanced GL lines |
SourceSnapshot | longtext | yes | Source document, original currency/rate, tax policy and amounts |
ReversalOf | reference | → JournalEntries; append-only linked reversal, never edit posted lines | |
ApprovedBy | reference | → Employees; independent Owner for manual entries | |
ApprovedAt | datetime | Authenticated approval of exact lines before manual post |
| Field | Type | Required | Details |
|---|---|---|---|
LineNumber | number | yes | |
Account | reference | yes | → ChartOfAccounts |
Description | text | ||
Debit | decimal | yes | 0 if credit line |
Credit | decimal | yes | 0 if debit line |
Parent | reference | yes | → JournalEntries |
| Field | Type | Required | Details |
|---|---|---|---|
LeadNumber | text | yes | |
Name | text | yes | |
Company | text | ||
Email | text | ||
Phone | text | ||
Source | select | yes | Web, Referral, Event, Outbound, Walk-in, Other |
Status | select | yes | New, Working, Qualified, Disqualified, Converted |
Owner | reference | yes | → Employees |
ConvertedContact | reference | → Contacts | |
CreatedDate | date | yes | Original capture date |
| Field | Type | Required | Details |
|---|---|---|---|
OpportunityNumber | text | yes | |
Name | text | yes | |
Customer | reference | yes | → Contacts |
Stage | select | yes | Prospecting, Proposal, Negotiation, ClosedWon, ClosedLost |
Amount | decimal | yes | |
CloseDate | date | yes | |
Owner | reference | yes | → Employees |
NextStep | text | ||
LossReason | select | Price, Timing, Fit, Competitor, NoDecision, Other | |
Status | select | yes | Open, Won, Lost; derived consistently from Stage |
Lead | reference | → Leads; unique conversion mapping | |
CreatedDate | date | yes | Original creation date |
| Field | Type | Required | Details |
|---|---|---|---|
Type | select | yes | Call, Email, Meeting, Task |
Subject | text | yes | |
RelatedLead | reference | → Leads | |
RelatedOpportunity | reference | → Opportunities | |
RelatedContact | reference | → Contacts | |
DueDate | date | ||
Status | select | yes | Open, InProgress, Completed |
Owner | reference | yes | → Employees |
ActivityNumber | text | yes | Stable follow-up identity |
| Field | Type | Required | Details |
|---|---|---|---|
RunNumber | text | yes | |
PeriodStart | date | yes | |
PeriodEnd | date | yes | |
PayDate | date | yes | |
Status | select | yes | Draft, Calculated, PendingApproval, Approved, PartiallyPaid, Paid, Failed, Cancelled |
EmployeeCount | formula | yes | fx: COUNT(PayStatements) |
GrossTotal | formula | yes | fx: SUM(PayStatements.GrossPay) |
NetTotal | formula | yes | fx: SUM(PayStatements.NetPay) |
ApprovedBy | reference | → Employees | |
PreparedBy | reference | yes | → Employees; HR / Payroll |
AssignedApprover | reference | yes | → Employees; Owner distinct from preparer |
Revision | number | yes | Exact employee/earnings/deductions population; new calculation invalidates approval |
CalculationSnapshot | longtext | yes | Approved provider/configuration version, country, frequency, calendar, rounding and effective compensation |
Currency | text | yes | Company home currency |
ApprovedAt | datetime | Exact statement and totals manifest | |
LiabilityJournal | reference | → JournalEntries; payroll liability recognized once on approved final calculation, before cash settlement |
| Field | Type | Required | Details |
|---|---|---|---|
StatementNumber | text | yes | |
Run | reference | yes | → PayrollRuns |
Employee | reference | yes | → Employees |
GrossPay | formula | yes | fx: SUM(PayStatementLines.Amount WHERE Category='Earning') |
TotalDeductions | formula | yes | fx: SUM(PayStatementLines.Amount WHERE Category IN ('Tax','Deduction')) |
NetPay | formula | yes | fx: GrossPay − TotalDeductions |
PaymentMethod | select | yes | Bank, Check, Cash |
Status | select | yes | Draft, Approved, PaymentPending, Paid, Failed, Cancelled |
PayDate | date | yes | Retained run pay date |
PeriodEnd | date | yes | Retained run period end |
Revision | number | yes | Same approved run population and calculation basis |
PublishedAt | datetime | Employee can read only own published statements |
| Field | Type | Required | Details |
|---|---|---|---|
Category | select | yes | Earning, Tax, Deduction |
Code | text | yes | BASE, OT, BONUS, TAX, PF, LOAN, etc. |
Description | text | yes | |
Amount | decimal | yes | |
Parent | reference | yes | → PayStatements |
LineNumber | number | yes | Unique within Parent; employer-only costs separately classified by approved provider mapping |
| Field | Type | Required | Details |
|---|---|---|---|
RequestNumber | text | yes | |
Employee | reference | yes | → Employees |
LeaveType | select | yes | Annual, Sick, Personal, Unpaid |
StartDate | date | yes | |
EndDate | date | yes | |
Days | formula | yes | fx: business-days between dates |
Status | select | yes | Submitted, Approved, Rejected, Cancelled, Taken |
Approver | reference | → Employees | |
Reason | text | ||
Balance | reference | yes | → LeaveBalances; matching employee, leave type and entitlement period |
CalendarSnapshot | longtext | yes | Working days, holidays, half-day policy and timezone |
Revision | number | yes | Changes require renewed decision |
ApprovedBy | reference | → Employees; HR / Payroll or Owner substitute, never the requesting employee | |
ApprovedAt | datetime | Atomic reservation and authenticated decision |
| Field | Type | Required | Details |
|---|---|---|---|
ClaimNumber | text | yes | |
Employee | reference | yes | → Employees |
ClaimDate | date | yes | |
Category | select | yes | Travel, Meals, Supplies, Software, Other |
Amount | decimal | yes | |
ExpenseAccount | reference | yes | → ChartOfAccounts |
Status | select | yes | Submitted, Approved, Reimbursed, Rejected |
Approver | reference | → Employees | |
ReceiptURL | text | ||
Currency | text | yes | Home currency by default; approved conversion snapshot for foreign receipts |
ExchangeRate | decimal | yes | Approved receipt-to-home-currency rate |
ApprovedBy | reference | → Employees; HR / Payroll or independent Owner, never claimant | |
ApprovedAt | datetime | Exact receipt/amount/account revision | |
Revision | number | yes | Edited approved claims require resubmission |
AmountReimbursed | decimal | yes | Confirmed target PaymentsMade only; payroll reimbursement is excluded to prevent double settlement |
PostedJournal | reference | → JournalEntries; approved expense to employee payable, settlement separately |
| Field | Type | Required | Details |
|---|---|---|---|
SettingNumber | text | yes | Stable effective configuration version |
LegalEntityName | text | yes | One legal entity per workspace |
HomeCurrency | text | yes | Posting and reporting currency |
CurrencyPrecision | number | yes | Reviewed rounding precision |
EffectiveFrom | date | yes | Policy version start |
BillApprovalThreshold | decimal | yes | Home-currency amount; above threshold requires Owner |
PayrollProvider | text | Verified provider or approved calculation configuration | |
PostingMappings | longtext | yes | AR/AP, unapplied receipts, employee payable, payroll payable, tax, bank and realized FX accounts |
Status | select | yes | Draft, Approved, Superseded |
| Field | Type | Required | Details |
|---|---|---|---|
PeriodNumber | text | yes | Unique company/start/end key; no overlap |
StartDate | date | yes | Inclusive posting start |
EndDate | date | yes | Inclusive posting end |
Status | select | yes | Open, PendingClose, Closed, PendingReopen |
PreparedBy | reference | yes | → Employees; Bookkeeper |
Approver | reference | yes | → Employees; independent Owner |
EvidenceSnapshot | longtext | Reconciled bank population, journals, subledger totals and unresolved-item disposition | |
ClosedAt | datetime | Actual atomic posting lock after approval | |
ReopenReason | longtext | Required new Owner decision; retains original close evidence | |
Revision | number | yes | New revision on reopen; never erase history |
| Field | Type | Required | Details |
|---|---|---|---|
AllocationNumber | text | yes | Unique receipt/invoice/application identity |
Receipt | reference | yes | → PaymentsReceived |
Invoice | reference | yes | → Invoices; same customer, valid currency basis |
AllocationDate | date | yes | Open posting period |
Amount | decimal | yes | Positive in invoice currency |
ReceiptAmount | decimal | yes | Amount consumed in receipt currency |
RateSnapshot | longtext | yes | Invoice and receipt home-currency carrying values; realized FX posted explicitly |
Status | select | yes | Applied, Reversed |
PostedJournal | reference | yes | → JournalEntries; unapplied cash to AR and realized FX, once |
AppliedBy | reference | yes | → Employees; Bookkeeper |
| Field | Type | Required | Details |
|---|---|---|---|
BalanceNumber | text | yes | Unique employee/type/start/end key |
Employee | reference | yes | → Employees |
LeaveType | select | yes | Annual, Sick, Personal, Unpaid |
PeriodStart | date | yes | Entitlement start |
PeriodEnd | date | yes | Entitlement end |
Entitlement | decimal | yes | Approved allocation, in working days |
Adjustments | decimal | yes | Signed authorized adjustments with retained reason/actor |
Taken | decimal | yes | Taken requests, counted once |
Reserved | decimal | yes | Approved future leave; taken transition releases reservation |
Pending | decimal | yes | Submitted requests, visible but not silently approved |
Remaining | formula | yes | fx: Entitlement + Adjustments - Taken - Reserved |
| Field | Type | Required | Details |
|---|---|---|---|
StatementLineNumber | text | yes | Unique bank/account/statement/line source key |
BankAccount | reference | yes | → ChartOfAccounts; IsCashAccount true |
StatementDate | date | yes | Bank value date |
Amount | decimal | yes | Signed amount in bank-account currency |
Currency | text | yes | Must match bank account |
Description | text | yes | Original bank narrative |
Status | select | yes | Unmatched, Proposed, Matched, Excluded |
MatchedJournal | reference | → JournalEntries; no double matching | |
MatchEvidence | longtext | Matched source IDs, amounts, differences, fees and reviewer; split matches reconcile exactly | |
Owner | reference | yes | → Employees; Bookkeeper |
| Field | Type | Required | Details |
|---|---|---|---|
PaymentNumber | text | yes | Unique run/revision/statement payout identity |
Statement | reference | yes | → PayStatements; approved exact revision |
PayDate | date | yes | Scheduled pay date |
Amount | decimal | yes | Approved statement net pay |
Currency | text | yes | Home currency |
Status | select | yes | Pending, Confirmed, Failed, Cancelled, Reversed |
RequestKey | text | yes | Stable idempotency key for retries |
ConfirmationEvidence | longtext | Authenticated beneficiary, amount, currency, bank trace and final outcome | |
ConfirmedAt | datetime | Actual settlement timestamp | |
PostedJournal | reference | → JournalEntries; payroll liability to bank once after confirmation |
Create your ERP.AI account and get started with Proto.
We use essential cookies to run the site and optional cookies for features, analytics, and relevant content. See Cookie policy
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 cookiesThese 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.