This guide covers implementation, configuration, daily use and troubleshooting for Small Business Management โ Accounting Enterprise.
Small Business Accounting Enterprise Implementation Guide
This guide explains how to implement the multi-company edition safely. It covers edition replacement, company isolation, company creation and switching, permissions, company-specific settings and email, customer copying, multi-company upgrades, sales channels, scoped API keys, remote fulfilment, testing and operational governance.
1. Enterprise architecture in plain language
Enterprise runs one WordPress plugin but maintains multiple accounting company contexts. Each company has its own operational and ledger records, company settings, branding, email profile, currencies and reporting context. The active company selector determines which companyโs books the user is working in.
Before creating, editing, importing, reporting or sending any document, confirm the active company shown in the Enterprise navigation. A correct record in the wrong company is still a serious error.
Company registry
Creates, switches and archives company contexts. It is not the place to maintain duplicate company profile fields.
Company Settings
The authoritative identity, tax, banking, document and reporting profile for the active company.
Company-scoped tables/options
Store transactions and settings separately so Company A does not share books with Company B.
Company permissions
Control which users may access which companies.
Sales Channel
A company-specific remote marketplace or website allowed to see selected products and send scoped orders/sales.
Scoped API key
A credential tied to one company, one Sales Channel and optionally one exact source domain.
2. Requirements, licence and edition replacement
| Item | Enterprise value / guidance |
|---|---|
| Product Code | small-business-accounting-enterprise |
| Nomad Product ID | nsbs_prod_223f6bf039d175017893accee870a904 |
| Edition rule | Enterprise replaces Free and Pro; do not keep lower editions active. |
| Licence | Activate through Small Business Management Hub โ Licences. |
| Backup | Full database and uploads, verified before activation and before every multi-company migration. |
| Environment | Use a current supported WordPress release and the PHP version required by the Enterprise package. |
Activate Enterprise over Free or Pro
- Create and verify a full backup.
- Record the current company name, numbering, tax, currency and email settings.
- Upload Accounting Enterprise 1.1.19.
- Activate Enterprise. The current bootstrap resolves Free/Pro conflicts before shared constants and Enterprise-only files load.
- Refresh the WordPress administration once to complete pending setup.
- Confirm the lower edition is inactive.
- Activate the Enterprise licence.
- Open Companies and confirm the migrated original company exists.
- Open Company Settings for that company and verify all details before creating a second company.
Enterprise is the only active edition and the original companyโs compatible data is available in its own context.
3. Design the company model before creating companies
Create a separate Enterprise company for a distinct legal entity or separately governed set of books. Do not create companies merely as departments or report filters unless they genuinely require separate numbering, tax, bank, currency, users and financial statements.
| Question | Create a separate company whenโฆ | Do not create a separate company whenโฆ |
|---|---|---|
| Legal and tax identity | The entity has its own registration/tax identity. | It is only a product line of the same legal entity. |
| Banking and receivables | It has separate bank accounts and customer balances. | The same company simply wants a departmental report. |
| Document numbering | It must issue its own quotes/invoices and branding. | All invoices are legally issued by one company. |
| Access control | Different teams must not see each otherโs books. | The same finance team works one shared ledger. |
4. Create and configure a company
Create the second company
- Open Settings & Automation โ Companies.
- Choose Add Company and enter the initial company name.
- Save. The new company opens Company Settings because that screen is authoritative for the profile.
- Complete registration, tax, contact, banking, payment terms and reporting-period fields.
- Configure invoice numbering and quote numbering unique to the company.
- Configure branding, document templates and company email settings.
- Configure base/enabled currencies and exchange rates.
- Return to Companies and confirm the selector name/summary synchronised from Company Settings.
The new company has a complete independent profile and can issue test documents without borrowing another companyโs identity.
Add this image immediately after completing or explaining the preceding section.
- Screen to capture: Enterprise โ Companies.
- Required state: Show at least two demo companies with one active and one inactive/available for switching.
- Must include: Company name, status, active-company marker, switch action and Add Company control.
- Redact or avoid: Real registration numbers and contact details.
- Suggested caption: The Companies screen creates and switches accounting contexts; Company Settings holds the full profile.
Editor note: replace this complete placeholder with a responsive image and keep the suggested caption as the figure caption.
Add this image immediately after completing or explaining the preceding section.
- Screen to capture: Any Enterprise Accounting page after selecting the second demo company.
- Required state: Use a category page with related tabs visible.
- Must include: Active company name, company switch control, Back button, category tabs and Enterprise badge.
- Redact or avoid: No special redaction is required with demo data.
- Suggested caption: Always verify the active company before creating, importing, reporting or sending a document.
Editor note: replace this complete placeholder with a responsive image and keep the suggested caption as the figure caption.
5. User-to-company permissions
Enterprise access should be assigned deliberately. A user may need one company, several companies or all companies depending on role. WordPress administrator status alone should not replace company-access design in daily operations.
Test company permissions
- Create a test finance user.
- Grant access to Company A only.
- Sign in as the test user and confirm Company B is not selectable or readable.
- Grant Company B and confirm it becomes available.
- Remove Company A and verify access is revoked.
- Repeat with the restricted Accounting Agent role if external bookkeeping access is required.
The user sees and operates only the authorised company contexts.
Add this image immediately after completing or explaining the preceding section.
- Screen to capture: Enterprise company/user access administration.
- Required state: Show one test finance user assigned to Company A only and another manager assigned to multiple companies.
- Must include: User, role, permitted companies and save/update control.
- Redact or avoid: Email address or username if it identifies a real person.
- Suggested caption: Assign only the company contexts each user is authorised to operate.
Editor note: replace this complete placeholder with a responsive image and keep the suggested caption as the figure caption.
6. Company-specific settings, branding and email
Enterprise resolves the active company before loading company settings, email identity, branding and document links. Configure and test each company separately. Do not assume the second company inherited correct details from the first.
Per-company configuration checklist
- Company legal/trading identity and tax registration.
- Address, phone, website and accounting contact.
- Bank details and payment terms.
- Quote/invoice numbering and prefixes.
- Logo, colours and document template.
- Sender name, reply-to and transactional email profile.
- Base currency, enabled currencies and exchange rates.
- Financial year and VAT reporting cycle.
- Chart of Accounts and mappings.
- Customer portal behaviour.
Prove email isolation
- Select Company A and send a test invoice to a controlled address.
- Verify Company A sender, logo, bank details and link.
- Switch to Company B and repeat.
- Verify Company B identity and that no Company A details appear.
- Inspect Transactional Email logs or wp_mail fallback result for both messages.
Each message and document uses the correct active-company identity and delivery profile.
Add this image immediately after completing or explaining the preceding section.
- Screen to capture: Create a composite of Company Settings, document branding and email profile for two demo companies.
- Required state: Show visibly different prefixes/logos/sender names.
- Must include: Company name, document prefix, logo/colour, sender name and reply-to domain.
- Redact or avoid: Bank account number, SMTP/API credentials and real registration numbers.
- Suggested caption: Each company must issue documents and email using its own approved identity.
Editor note: replace this complete placeholder with a responsive image and keep the suggested caption as the figure caption.
7. Copy selected customers between companies
Enterprise can copy selected customer/contact records between companies. The copy is intentionally limited to customer/contact information. Quotes, invoices, payments, statements, portal history and other transactions must not be copied, because they belong to the source companyโs books.
Copy a customer safely
- Select the source company and open the customer-copy facility.
- Choose one or more customer/contact records.
- Select the target company.
- Preview or confirm the customer fields that will be copied.
- Run the copy.
- Switch to the target company and inspect the new customer record.
- Confirm there are no copied invoices, quotes, payments or balances.
The target company has an independent contact record with no transaction history from the source company.
Add this image immediately after completing or explaining the preceding section.
- Screen to capture: Customer copy facility followed by the target-company customer record.
- Required state: Use one sample customer copied from Company A to Company B.
- Must include: Selected source customer, target company, copied contact fields and empty transaction history in the target.
- Redact or avoid: Real customer details.
- Suggested caption: Enterprise copies customer/contact information only; transactions remain in the source company.
Editor note: replace this complete placeholder with a responsive image and keep the suggested caption as the figure caption.
8. Company-specific master data and ledger
Products, categories, customers, suppliers, accounts, mappings and transactions are company-scoped. Decide whether each company needs its own product catalogue or whether a controlled initial import should be used. Never assume a product ID from Company A has meaning in Company B.
9. Multi-company upgrades and scheduled jobs
An Enterprise upgrade must apply database changes to every company, not only the active company. Scheduled recurring invoices, reminders, statements and other jobs must also iterate through authorised company contexts and restore context correctly after processing. After an upgrade, test at least one record and one scheduled workflow in every company.
Post-upgrade company matrix
- Company selector loads every active company.
- Company Settings and numbering load correctly in each company.
- Customers, products, invoices, payments and expenses are visible only in the correct company.
- Ledger and reports load in each company.
- Email sender and document branding are correct in each company.
- Recurring jobs do not generate cross-company documents.
- Portal users see only their company/customer records.
Add this image immediately after completing or explaining the preceding section.
- Screen to capture: Release Readiness or a documented company-by-company upgrade checklist.
- Required state: Show every demo company checked after an Enterprise update.
- Must include: Company, database upgrade status, scheduled jobs, settings check and smoke-test result.
- Redact or avoid: Internal server paths or credentials.
- Suggested caption: Validate every company context after an Enterprise update, not only the currently active company.
Editor note: replace this complete placeholder with a responsive image and keep the suggested caption as the figure caption.
10. Sales Channels and API keys
A Sales Channel represents one marketplace or remote website authorised to obtain selected products and return checkout/sale events for one Enterprise company. Product visibility is explicit: a product is not exposed merely because it exists in Accounting. The API key is scoped to the company and channel, and a domain-scoped key also requires the exact source host header.
Create a Sales Channel connection
- Select the correct Enterprise company.
- Open Sales Channels & API.
- Create the Sales Channel with the exact marketplace domain and currency.
- Assign only the products that the channel may sell.
- For Plan products, set the marketplace plan key.
- For License products, set the activation limit.
- Generate the scoped API key and copy the full key immediately; only the prefix remains visible later.
- Save the Accounting URL and API key on the authorised marketplace/licensing server.
- Run Test Accounting Connection and verify callback registration.
The remote channel can retrieve only its assigned products and submit authorised test events for the correct company.
Add this image immediately after completing or explaining the preceding section.
- Screen to capture: Enterprise Sales Channel configuration.
- Required state: Use a demo channel tied to one company and one exact domain.
- Must include: Channel name, company, domain/source host, currency, product scope, key prefix and status.
- Redact or avoid: Full API key, signing secret and private callback secret.
- Suggested caption: Scope each remote connection to the correct company, Sales Channel and source domain.
Editor note: replace this complete placeholder with a responsive image and keep the suggested caption as the figure caption.
11. Product types and fulfilment boundaries
| Product type | Meaning | Billing / fulfilment |
|---|---|---|
| Plan | Hosted service or marketplace entitlement | Free, once-off, monthly or yearly; marketplace adapter grants access. |
| License | Downloadable/licensed software | Once-off, monthly or yearly; Licensing & Sales Server issues/renews licence and activation limit. |
| Physical product | Tangible stock item | Once-off only; may use inventory fields; no plan entitlement or software licence. |
Do not classify one product as Plan and License or Plan and Physical. Create separate products when the commercial items have different fulfilment rules.
12. Remote API and source-domain control
| Endpoint | Purpose |
|---|---|
| GET /wp-json/ana/v1/ping | Connection and capability test. |
| GET /wp-json/ana/v1/products | Retrieve channel-assigned products. |
| GET /wp-json/ana/v1/products/{id} | Retrieve one authorised product. |
| POST /wp-json/ana/v1/checkout-order | Create a secure pending remote checkout order. |
| POST /wp-json/ana/v1/sales | Submit a verified completed sale. |
| POST /wp-json/ana/v1/callback-registration | Register the remote purchase-completed callback where supported. |
Requests use the X-ANA-API-Key header. Domain-scoped keys also require X-Nomad-Source-Host to match the configured domain. Treat API keys like passwords: never publish them, email them casually or store them in source control.
Add this image immediately after completing or explaining the preceding section.
- Screen to capture: Sales Channel connection/test or diagnostics screen.
- Required state: Show a successful ping/product-scope test and callback registration status.
- Must include: Remote domain, company/channel identity, successful response, product count and callback status.
- Redact or avoid: API key, callback secret, bearer token and raw personal data.
- Suggested caption: A successful connection test confirms identity and scope before live commerce is enabled.
Editor note: replace this complete placeholder with a responsive image and keep the suggested caption as the figure caption.
13. Payment and fulfilment architecture
Enterprise creates pending marketplace orders and uses its native sale engine for invoices, VAT, payments, CRM automation, inventory, audit and ledger workflows. Payment gateways remain separate connectors. A verified connector completes the Enterprise order using a unique payment reference. Callback events are recorded and retried with idempotency so the same event does not issue duplicate licences, entitlements, invoices or payments.
Test a remote paid sale
- Use a staging Sales Channel and a low-risk test product.
- Create the checkout order from the remote channel.
- Complete payment through the configured test gateway connector.
- Verify the completed sale creates the correct Enterprise invoice and payment in the intended company.
- Verify the callback creates the intended plan entitlement, software licence or physical fulfilment record.
- Replay the same event reference deliberately in staging.
- Confirm no duplicate invoice, payment or fulfilment record is created.
The full remote sale is company-scoped, auditable and idempotent.
14. Customer portal and public document isolation
Public quote/invoice tokens and portal access must resolve the correct company before loading records or email/branding settings. Test with users from different companies and customers. A valid token for Company A must never retrieve a Company B record.
Add this image immediately after completing or explaining the preceding section.
- Screen to capture: Create an annotated composite showing Company A portal/document and Company B portal/document.
- Required state: Use two demo customers and clearly different company branding.
- Must include: Company identity, customer identity, document prefix and only the authorised document list.
- Redact or avoid: Public tokens, login details and real customer information.
- Suggested caption: Public links and portals must remain isolated by both company and customer.
Editor note: replace this complete placeholder with a responsive image and keep the suggested caption as the figure caption.
15. Enterprise production acceptance test
Enterprise acceptance matrix
- Activation over Free tested.
- Activation over Pro tested.
- Clean Enterprise activation tested.
- Licence active with canonical Product Code and Product ID.
- At least two companies created and fully configured.
- Company access permissions verified with non-admin users.
- Customer copy tested with zero transactions copied.
- Quote โ invoice โ payment โ statement completed separately in each company.
- Expense, bank import, reconciliation and ledger posting tested in each company.
- Email, branding, numbering, currency and reporting isolation verified.
- Portal/public document isolation tested.
- Sales Channel product visibility and domain-scoped API tested.
- Remote sale and duplicate-event replay tested.
- Scheduled jobs tested across all companies.
- Backup and restore tested.
16. Enterprise troubleshooting
| Symptom | Likely cause | What to do |
|---|---|---|
| Enterprise activates but wrong files load | Shared constant collision from old Enterprise build | Use 1.1.19 or later and replace the old plugin folder. |
| Record appears in wrong company | User acted under the wrong active context or import was scoped incorrectly | Stop, identify affected records and correct under an approved migration plan. |
| Company email uses another brand | Active-company context or settings were not confirmed | Verify company selector, Company Settings, branding and email profile. |
| Remote API returns domain mismatch | Source host does not exactly match the Sales Channel domain | Correct domain and X-Nomad-Source-Host; do not weaken the check. |
| Remote sale creates no fulfilment | Callback registration, queue or connector verification failed | Inspect callback events, retry queue and remote connector logs. |
| Duplicate remote records | Unique event/payment reference was not preserved | Investigate idempotency keys before deleting or replaying anything. |
| User can see an unauthorised company | Company permission assignment is too broad | Revoke access immediately and audit company/user mappings. |
17. Company-isolation test scripts
Test A: Record isolation
- Create Customer A1 in Company A and Customer B1 in Company B.
- Create invoice A-TEST in Company A and B-TEST in Company B.
- While Company A is active, search for B-TEST and confirm no result.
- While Company B is active, search for A-TEST and confirm no result.
- Repeat for payments, expenses, bank feeds and ledger entries.
Test B: Settings isolation
- Use different company names, logos, bank details, invoice prefixes and sender addresses.
- Create and email one test invoice per company.
- Compare public pages and messages side by side.
- Confirm every identifying field comes from the correct company.
Test C: Scheduled automation isolation
- Create one due subscription in each company with different customers and prefixes.
- Run the scheduled/billing process in staging.
- Confirm each company receives one correctly numbered invoice.
- Confirm company context is restored after processing and no records cross companies.
18. Enterprise data governance model
| Data owner | Data set | Governance control |
|---|---|---|
| Enterprise administrator | Company registry and company access | Approval for create/archive and access changes. |
| Company finance owner | Company settings, numbering, bank, tax and reporting periods | Company-specific sign-off. |
| Accounting Manager | Transactions, ledger, reconciliation and period close | Review, audit and separation of duties. |
| Sales-channel owner | Product assignments, channel domain and prices | Channel change log and test sync. |
| Systems administrator | API keys, connectors, backups and updates | Secret management, logs and recovery testing. |
19. API key lifecycle
- Create: Generate only for an approved company/channel/domain and copy once into secure secret storage.
- Identify: Use the retained prefix to know which key is installed without exposing the secret.
- Rotate: Generate a replacement, update the remote system, test, then revoke/delete the old key.
- Revoke: Remove immediately when a channel is decommissioned, domain changes or compromise is suspected.
- Audit: Review channel keys and recent API/callback activity periodically.
20. Remote integration acceptance matrix
| Test | Expected result |
|---|---|
| Ping with valid key and host | Success and advertised capabilities. |
| Ping with wrong host | Domain/source-host rejection. |
| Products request | Only assigned products for the scoped company/channel. |
| Unassigned product request | Not returned/authorised. |
| Checkout order | One pending order with stable token/reference. |
| Verified completed sale | One company invoice/payment and intended fulfilment. |
| Replay same event | No duplicate invoice, payment, entitlement or licence. |
| Temporary callback failure | Queued event with bounded retry and no duplicate local sale. |
| Key deletion | Remote requests fail after revocation. |
21. Company archive and decommissioning
Archiving a company should prevent ordinary new work while preserving required records. Before archive, complete open transaction review, exports, backups, portal/access shutdown, Sales Channel disconnection and API key revocation. Do not delete tables merely to remove a company from the selector.
Archive checklist
- Open receivables/payables reviewed.
- Final bank reconciliation and reports exported.
- Customer portal access disabled or communicated.
- Sales Channel product assignments removed.
- API keys revoked and callbacks disabled.
- Final backup and retention location recorded.
- Company archived by authorised administrator.
22. Enterprise upgrade acceptance
After every Enterprise update
- All companies visible and switchable.
- Original and newest company both load records.
- Company-specific settings and email identities intact.
- Company permissions unchanged.
- One report and one transaction screen load in every company.
- Sales Channel ping/products test passes for each active remote channel.
- Callback queue and scheduled jobs show no cross-company errors.
- No lower Accounting edition became active.