erpclaw
Full-Stack ERP Controller for ERPClaw. Company setup, chart of accounts, journal entries, payments, tax, financial reports, customers, sales, suppliers, purchasing, inventory, billing, HR, US payroll, advanced accounting (ASC 606/842, intercompany, consolidation), and 43 optional industry modules. Local-first SQLite, double-entry GL, immutable audit trail.
Security: Local-first. Parameterized queries. RBAC (PBKDF2). Immutable GL. Sensitive fields encrypted at the column level. Network access limited to fetch-exchange-rates (public API) and user-approved install-module from github.com/avansaber/*.
Skill Activation Triggers
Activate when user mentions: ERP, accounting, invoice, sales order, purchase order, customer, supplier, inventory, payment, GL, trial balance, P&L, balance sheet, tax, billing, modules, install module, onboard, CRM, manufacturing, healthcare, education, retail, employee, HR, payroll, salary, leave, attendance, expense claim, W-2, garnishment, integration.
Auto-Detection
When a user describes their business: detect type (e.g., "dental practice" -> dental), ask user to confirm before proceeding, then call setup-company --industry <type>. Industry values: retail, restaurant, healthcare, dental, veterinary, construction, manufacturing, legal, agriculture, hospitality, property, school, university, nonprofit, automotive, therapy, home-health, consulting, distribution, saas. When a user asks about a service or integration not currently installed, search the module registry and suggest installation (never auto-install without user approval).
Setup
python3 {baseDir}/scripts/erpclaw-setup/db_query.py --action initialize-database
python3 {baseDir}/scripts/db_query.py --action seed-defaults --company-id <id>
python3 {baseDir}/scripts/db_query.py --action setup-chart-of-accounts --company-id <id> --template us_gaap
Runtime gate
Write actions that materially change financial state require the --user-confirmed flag on every invocation. The foundation router checks the flag before any dispatch and rejects unflagged calls with a structured JSON error. Read-only actions (verbs list, get, reports) run without the flag.
All 467 Actions
Setup & Admin (44)
| Action | Description |
|---|
initialize-database / setup-company / update-company / get-company / list-companies | DB init & company CRUD |
add-currency / list-currencies / add-exchange-rate / get-exchange-rate / list-exchange-rates / fetch-exchange-rates | Currency & FX |
add-payment-terms / list-payment-terms / add-uom / list-uoms / add-uom-conversion | Terms & UoMs |
seed-defaults / seed-demo-data / check-installation / install-guide / setup-web-dashboard / tutorial / onboarding-step / status | Seeding & utilities |
add-user / update-user / get-user / list-users / set-password | User management |
add-role / list-roles / assign-role / revoke-role / seed-permissions | RBAC & security |
link-telegram-user / unlink-telegram-user / check-telegram-permission | Telegram integration |
backup-database / list-backups / verify-backup / restore-database / cleanup-backups | DB backup/restore |
get-audit-log / get-schema-version / update-regional-settings / onboard | System admin |
General Ledger (26)
| Action | Description |
|---|
setup-chart-of-accounts / add-account / update-account / get-account / list-accounts | Account CRUD |
freeze-account / unfreeze-account / get-account-balance / check-gl-integrity | Account management |
post-gl-entries / reverse-gl-entries / list-gl-entries | GL posting |
add-fiscal-year / list-fiscal-years / validate-period-close / close-fiscal-year / reopen-fiscal-year | Fiscal year |
add-cost-center / list-cost-centers / add-budget / list-budgets | Cost centers & budgets |
seed-naming-series / next-series / revalue-foreign-balances | Naming & FX revaluation |
import-chart-of-accounts / import-opening-balances | CSV import |
Journal Entries (16)
| Action | Description |
|---|
add-journal-entry / update-journal-entry / get-journal-entry / list-journal-entries | JE CRUD |
submit-journal-entry / cancel-journal-entry / amend-journal-entry / delete-journal-entry / duplicate-journal-entry | JE lifecycle |
create-intercompany-je | Intercompany JE |
add-recurring-template / update-recurring-template / list-recurring-templates / get-recurring-template / process-recurring / delete-recurring-template | Recurring JEs |
Payments (13)
| Action | Description |
|---|
add-payment / update-payment / get-payment / list-payments / submit-payment / cancel-payment / delete-payment | Payment CRUD & lifecycle |
create-payment-ledger-entry / get-outstanding / get-unallocated-payments / allocate-payment / reconcile-payments / bank-reconciliation | Reconciliation |
Tax (17)
| Action | Description |
|---|
add-tax-template / update-tax-template / get-tax-template / list-tax-templates / delete-tax-template | Tax template CRUD |
resolve-tax-template / calculate-tax / add-tax-category / list-tax-categories / add-tax-rule / list-tax-rules | Tax rules |
add-item-tax-template / add-tax-withholding-category / get-withholding-details | Withholding |
record-withholding-entry / record-1099-payment / generate-1099-data | 1099 reporting |
Financial Reports (20)
| Action | Description |
|---|
trial-balance / profit-and-loss / balance-sheet / cash-flow / general-ledger / party-ledger | Core statements |
ar-aging / ap-aging / budget-vs-actual (alias: budget-variance) | Aging & budget |
tax-summary / payment-summary / gl-summary / comparative-pl / check-overdue | Summaries |
add-elimination-rule / list-elimination-rules / run-elimination / list-elimination-entries | Intercompany |
Selling (48)
| Action | Description |
|---|
add-customer / update-customer / get-customer / list-customers / import-customers | Customer CRUD |
add-quotation / update-quotation / get-quotation / list-quotations / submit-quotation / convert-quotation-to-so | Quotations |
add-sales-order / update-sales-order / get-sales-order / list-sales-orders / submit-sales-order / cancel-sales-order / amend-sales-order / close-sales-order | Sales orders |
add-blanket-order / get-blanket-order / list-blanket-orders / submit-blanket-order / create-so-from-blanket | Blanket orders |
create-delivery-note / get-delivery-note / list-delivery-notes / submit-delivery-note / cancel-delivery-note / add-packing-slip / get-packing-slip / list-packing-slips | Delivery & packing |
create-sales-invoice / update-sales-invoice / get-sales-invoice / list-sales-invoices / submit-sales-invoice / cancel-sales-invoice | Invoicing |
create-credit-note / list-credit-notes / update-invoice-outstanding | Credit notes |
add-sales-partner / list-sales-partners | Sales partners |
add-recurring-template / update-recurring-template / list-recurring-templates / generate-recurring-invoices | Recurring invoices |
add-intercompany-account-map / list-intercompany-account-maps / create-intercompany-invoice / list-intercompany-invoices / cancel-intercompany-invoice | Intercompany |
Buying (40)
| Action | Description |
|---|
add-supplier / update-supplier / get-supplier / list-suppliers / import-suppliers | Supplier CRUD |
add-material-request / submit-material-request / list-material-requests | Material requests |
add-rfq / submit-rfq / list-rfqs / add-supplier-quotation / list-supplier-quotations / compare-supplier-quotations | RFQs & quotes |
add-purchase-order / update-purchase-order / get-purchase-order / list-purchase-orders / submit-purchase-order / cancel-purchase-order / close-purchase-order | Purchase orders |
add-blanket-po / get-blanket-po / list-blanket-pos / submit-blanket-po / create-po-from-blanket / create-po-from-so / create-drop-ship-order | Blanket POs & drop ship |
create-purchase-receipt / get-purchase-receipt / list-purchase-receipts / submit-purchase-receipt / cancel-purchase-receipt | Receipts |
create-purchase-invoice / update-purchase-invoice / get-purchase-invoice / list-purchase-invoices / submit-purchase-invoice / cancel-purchase-invoice | Purchase invoices |
create-debit-note / add-landed-cost-voucher / update-receipt-tolerance / update-three-way-match-policy | Adjustments |
Inventory (42)
| Action | Description |
|---|
add-item / update-item / get-item / list-items / import-items / add-item-group / list-item-groups | Item master |
add-item-attribute / create-item-variant / generate-item-variants / list-item-variants | Item variants |
add-item-supplier / list-item-suppliers / set-item-purchase-uom | Item suppliers |
add-warehouse / update-warehouse / list-warehouses | Warehouses |
add-stock-entry / get-stock-entry / list-stock-entries / submit-stock-entry / cancel-stock-entry | Stock entries |
create-stock-ledger-entries / reverse-stock-ledger-entries | Stock ledger |
get-stock-balance / stock-balance / stock-balance-report / stock-ledger-report / get-projected-qty | Stock reports |
add-batch / list-batches / add-serial-number / list-serial-numbers | Batch & serial |
add-price-list / add-item-price / get-item-price / add-pricing-rule | Pricing |
add-stock-reconciliation / submit-stock-reconciliation | Reconciliation |
revalue-stock / list-stock-revaluations / get-stock-revaluation / cancel-stock-revaluation / check-reorder | Revaluation & reorder |
Billing & Metering (23)
| Action | Description |
|---|
add-meter / update-meter / get-meter / list-meters / add-meter-reading / list-meter-readings | Meters |
add-usage-event / add-usage-events-batch | Usage tracking |
add-rate-plan / update-rate-plan / get-rate-plan / list-rate-plans / rate-consumption | Rate plans |
create-billing-period / run-billing / generate-invoices / get-billing-period / list-billing-periods | Billing cycles |
add-billing-adjustment / add-prepaid-credit / get-prepaid-balance | Adjustments & prepaid |
add-recurring-bill-template / list-recurring-bill-templates / generate-recurring-bills | Recurring bills |
Advanced Accounting (45)
| Action | Description |
|---|
add-revenue-contract / update-revenue-contract / get-revenue-contract / list-revenue-contracts | Revenue contracts |
add-performance-obligation / list-performance-obligations / satisfy-performance-obligation | ASC 606 |
add-variable-consideration / list-variable-considerations / modify-contract | Variable consideration |
calculate-revenue-schedule / generate-revenue-entries / revenue-waterfall-report / revenue-recognition-summary | Revenue recognition |
recognize-schedule-entry / update-performance-obligation / update-schedule-amounts | Revenue schedule management |
add-lease / update-lease / get-lease / list-leases / classify-lease | ASC 842 leases |
calculate-rou-asset / calculate-lease-liability / generate-amortization-schedule / record-lease-payment | Lease calculations |
lease-maturity-report / lease-disclosure-report / lease-summary | Lease reports |
add-ic-transaction / update-ic-transaction / get-ic-transaction / list-ic-transactions | Intercompany |
approve-ic-transaction / post-ic-transaction / add-transfer-price-rule / list-transfer-price-rules | IC approvals |
ic-reconciliation-report / ic-elimination-report | IC reports |
add-consolidation-group / list-consolidation-groups / add-group-entity / add-currency-translation | Consolidation setup |
run-consolidation / generate-elimination-entries / consolidation-trial-balance-report / consolidation-summary | Consolidation |
standards-compliance-dashboard | ASC 606/842 compliance |
HR & Payroll (58)
| Action | Description |
|---|
add-employee / update-employee / get-employee / list-employees / record-lifecycle-event | Employee CRUD |
add-employee-bank-account / list-employee-bank-accounts / add-employee-document / get-employee-document / list-employee-documents / check-expiring-documents | Employee details |
add-department / list-departments / add-designation / list-designations | Org structure |
add-leave-type / list-leave-types / add-leave-allocation / get-leave-balance | Leave config |
add-leave-application / approve-leave / reject-leave / list-leave-applications | Leave requests |
mark-attendance / bulk-mark-attendance / list-attendance / add-holiday-list | Attendance |
add-shift-type / update-shift-type / list-shift-types / assign-shift / list-shift-assignments | Shift management |
add-regularization-rule / apply-attendance-regularization | Attendance regularization |
add-expense-claim / submit-expense-claim / approve-expense-claim / reject-expense-claim / update-expense-claim-status / list-expense-claims | Expenses |
add-salary-component / list-salary-components / add-salary-structure / get-salary-structure / list-salary-structures | Salary config |
add-salary-assignment / list-salary-assignments / add-income-tax-slab / add-state-tax-slab / update-employee-state-config | Payroll config |
update-fica-config / update-futa-suta-config / add-overtime-policy / calculate-overtime / calculate-retro-pay | Tax & overtime |
create-payroll-run / generate-salary-slips / get-salary-slip / list-salary-slips / submit-payroll-run / cancel-payroll-run | Payroll processing |
generate-w2-data / generate-nacha-file / add-garnishment / update-garnishment / get-garnishment / list-garnishments | W-2, NACHA, garnishments |
get-amendment-history | Amendment tracking |
Module Management & Schema (15)
| Action | Description |
|---|
install-module / remove-module / update-modules / list-modules / available-modules / search-modules / module-status | Module catalog (install/remove require user approval) |
rebuild-action-cache / list-all-actions / list-profiles / onboard / list-industries | Actions & profiles |
validate-module | Constitution check for any module (read-only) |
schema-plan / schema-apply / schema-rollback / schema-drift | Schema migration (apply/rollback require user approval) |
regenerate-skill-md | Regenerate SKILL.md |
Module authoring + DGM evolution (developer tooling): module generation, in-module feature injection, sandboxed test execution, deploy pipeline, DGM variants, gap detection, heartbeat analysis, semantic checks, and the OS-engine status command live in the optional erpclaw-os-engine addon (~30 actions, all os- prefixed). The addon is GitHub-only and not installed by default. Install via module_manager.py --action install-module --module-name erpclaw-os-engine. Foundation does not run module-generation or auto-deploy code paths.
Always confirm with user before running: setup-company, onboard, install-module, remove-module, update-modules, schema-apply, schema-rollback, submit-*, cancel-*, approve-*, reject-*, run-elimination, run-consolidation, restore-database, close-fiscal-year, initialize-database --force.
Technical Details (Tier 3)
Router: scripts/db_query.py -> 14 core domains. Optional modules installed from GitHub (avansaber/*) to ~/.openclaw/erpclaw/modules/ (user-approved only). Single SQLite DB (WAL). 188 core tables (688 with modules). Money=TEXT(Decimal), IDs=TEXT(UUID4), GL immutable. Python 3.10+. All network activity limited to: (1) fetch-exchange-rates — public exchange rate API, (2) install-module — git clone from github.com/avansaber/* only, requires user approval.