The decisions
Nine parallel research missions produced roughly 10,000 lines of findings. These are the conclusions that survived them. Everything after this section is the evidence.
Ruled 12 Aug 2026: InvoiceNext displaces the next2 demo-ready mandate and runs to completion — demo-ready with several providers integrated — before next2 resumes. Next2 is paused at 85 demoable / 86 partial / 32 missing of 204 capabilities, main green, everything deployed. Nothing is abandoned; the burn-down waits.
Oman has 47,700 VAT registrants against the UAE's ~743,000 in-scope businesses. We go there anyway because Wafeq, Qoyod, Daftra and Odoo have no Oman offering at all, Zoho prices it in USD with no e-invoicing claim, and we already hold a client, a reseller, an ASP relationship and a client-funded 313-field data dictionary there. Oman is the beachhead; the UAE is the market.
We are a corner-1 software vendor. Creating an invoice is not a regulated activity in either country, and both regulators put the duty to appoint a provider on the taxpayer, not on us. SMARTeIS is primary for both jurisdictions; the adapter is already ~85% written and its documentation covers the UAE too.
OpenPeppol now requires ISO 27001 of every service provider for a first production certificate from 1 January 2027, and white-labelling does not exempt us. It takes 6–12 months and cannot be compressed. Defer it and the option to ever run our own access point moves 18 months away instead of three.
Oman permits a wholly-owned foreign company to be an accredited provider: mainland registration with two IT activities, capital of about €13,500, no fee, no Omani ownership requirement — and a new Omani entity may rely on its parent's operating experience. Keep Abu Retham as the reseller channel and Al Naba as a customer and reference.
CSV/Excel import with a real validator, a public REST API with keys and a sandbox, and an email/SFTP drop. Four weeks buys 100% coverage; the first ERP connector takes three months and buys 30%. We sell compliance in month one and automation in month six — selling compliance late is fatal.
286 of next2's 321 migrations touch the tenancy and security schemas, interleaved throughout the chain — it cannot be split against a live database. And with PostgreSQL chosen, next2's raw T‑SQL kernel does not port at all. We take the patterns and the pure-Python modules, and write the tenancy layer fresh.
Not scope creep, the moat. Both regulators require a business to use one provider for both directions, so payables is part of the same purchase, not a second product — and Zoho Invoice has no payables at all. Inbound Peppol inbox, automatic bill registration, supplier liability, VAT input. No ledger.
Oman's VAT Executive Regulations make Arabic the default language of a tax invoice and English the conditional exception. One bilingual document with paired labels, mirrored RTL, Arabic typographically primary — rendered by WeasyPrint, which was the only engine of four to produce a clean, searchable Arabic text layer.
The only published provider price is $1.10 per B2B invoice. Against a market ceiling of AED 57–80 per month, a customer issuing 100 invoices costs seven times what they pay. Nothing ships until we have a wholesale rate — and the structure of that rate matters roughly twelve times more than the number.
The clock
Both mandates are phased by turnover. Our customer is in the later band of each, which is more build runway than the headline dates suggest — and the reason the connector business earns revenue before the app does.
| Jurisdiction & band | Appoint provider by | Go live | Note |
|---|---|---|---|
| UAE voluntary pilot | — | 1 Jul 2026 | Open now |
| UAE ≥ AED 50m | 30 Oct 2026 | 1 Jan 2027 | Extended from 31 Jul by MD 66/2026 |
| UAE < AED 50m — our market | 31 Mar 2027 | 1 Jul 2027 | Large-ERP accounts are already gone; this is the app's market |
| UAE government | 31 Mar 2027 | 1 Oct 2027 | B2B and B2G only — B2C is out of scope |
| Oman pilot (100 firms) | — | end Aug 2026 | Voluntary |
| Oman > OMR 5m | — | 1 Apr 2027 | Reset by Decision 189/2026, 9 Aug — most vendors and the OTA's own FAQ still publish the superseded schedule |
| Oman ≤ OMR 5m — our market | — | 1 Oct 2027 |
Verified — UAE dates from Ministerial Decisions 243, 244 of 2025 and 66 of 2026; Oman from Decision 189/2026. Three independent streams converged on the UAE dates.
The UAE's first wave is AED 50m+ businesses. They are not SMBs and they do not need our app — they run SAP, Sage, Oracle or Tally and need a bridge. Our app's buyers arrive on 1 Jul 2027 (UAE) and 1 Oct 2027 (Oman). So the connector business earns first and the product business earns second, roughly nine months apart. Build accordingly.
The compliance model, in one paragraph each
Both countries run Peppol five-corner networks, and neither has a clearance gate. The invoice travels supplier → supplier's provider → buyer's provider → buyer, while a tax data document is reported to the authority in parallel. Oman's own architecture document — authored by OpenPeppol — states the authority validates that document against Schematron only, explicitly "not for tax compliance."
Because nothing blocks, a rejection can arrive after the customer already holds the invoice. The product needs compensating actions and an active withdrawal path, not a blocking gate. Building this by analogy to ZATCA's clearance model would be wrong in a way that only surfaces in production.
What is ours, and what is not
| Concern | Owner | Note |
|---|---|---|
| UBL / PINT XML generation | Provider | Spec requires the provider to build and validate it |
| Digital signature & AS4 transport | Provider | No signing or hashing requirement falls on us at all — a false gap in the April assessment |
| Seller UUID | Us | Spec: "generated by the seller"; UUIDv5, deterministic |
| QR code | Us | Spec: "the supplier must generate and print". No provider API returns one |
| Archival | Us | Providers hold documents in transit then delete. Retention sits on the taxpayer — so durable archive is a feature we can charge for |
| Pre-flight validation | Us | A business-rule rejection is non-retryable; catching it before submission is the whole game |
| Idempotency | Us | No provider offers an idempotency header; all require a client-minted key |
Market and the gap
The UAE's 156,000-business gap between VAT registrants and corporate-tax registrants is entirely sub-threshold businesses that are in scope and unserved. At AED 50–100 per month, one percent of the combined market is AED 3.8–7.6m ARR.
Where the gap actually is
Every mass-market SMB product — Zoho, Xero, QuickBooks, Odoo, Wafeq, Qoyod, Daftra — is absent from the accredited layer. Only Tally bridges both, and Tally is desktop-first with no Arabic UI. Meanwhile not one of the 42 accredited UAE providers publishes a price or offers self-serve signup.
A direct competitor already exists. nazm.ae positions itself verbatim as "not an ASP — connect your accounting software to any accredited ASP through Nazm," which is architecturally the same product. Ten of the 42 accredited providers already claim Sage support, and two — Advintek and KGRN — run Sage-specific UAE landing pages and hold accreditation. What remains genuinely unoccupied is narrower than "the compliance bridge": it is the self-serve, published-price, Arabic-first end of it. Oman is where that is attackable, because there almost nobody is present at all.
Competitive set
| Product | Position | Entry price | UAE accredited | Oman |
|---|---|---|---|---|
| Zoho Invoice / Books | Incumbent; free tier is the price anchor | AED 0 / 60 | No | None |
| Wafeq | Arabic-first, unlimited users — sets the ceiling | AED 57 | No | None |
| Tally | Desktop, perpetual licence, no Arabic UI | AED 2,340 | Yes | Partial |
| Qoyod | Arabic-native, ~25k Saudi customers | SAR 120 | Saudi only | None |
| Daftra | All-in-one | USD 20 | No | None |
Two watch items
- Zoho's UAE e-invoicing intentions are unknown and decisive. They already shipped full ZATCA Phase-2 clearance inside the free product for Saudi — so they can do this, and if they do it for the UAE the SMB opportunity narrows sharply. They have shipped nothing for Oman.
- Odoo already runs its own Peppol access point and SMP but excludes the Gulf — a product decision, reversible quickly.
ASP posture
Four providers, one abstraction, and a deliberate decision not to become one of them yet — with a single exception that has a hard deadline.
| Provider | Oman | UAE | Sandbox | Status API | Inbound / AP | Verdict |
|---|---|---|---|---|---|---|
| SMARTeIS | Accredited | PINT AE | Yes | Per-corner | Full inbox + ack | Primary, both countries. 22 endpoints, pre-flight validation, rate limits, durable queue. Adapter ~85% built. Its docs reference its own UAE product — one adapter, two jurisdictions. |
| ClearTax | Accredited | Accredited | Yes | 4 states | ≤3-day windows | Oman fallback and the GCC expansion path — the only one covering Saudi, Bahrain, Qatar and Kuwait. Best multi-tenant primitive of the four. |
| Complyance | Not supported | Accredited | 3 envs | 7 states | Read-only | UAE fallback, and the abstraction's stress test. Best-engineered API of the four; the most structurally different, so building it proves the interface. |
| Taxilla | Claimed | Listed | None | None | None | Commercial conversation only. Four endpoints, no status endpoint, no sandbox, three error codes, a bespoke per-customer transformation. Not buildable as documented. |
Verified UAE listings — read from the Ministry of Finance register (42 entries). Unverified Taxilla's Oman accreditation — claimed on their own site with no date, number or register link; the OTA publishes no public directory we could find. Ask them for the reference in the commercial conversation.
Should we become an ASP ourselves?
Not yet — the financial case is off by one to two orders of magnitude. Break-even on per-message pricing is roughly 5,300 customers white-label or 9,200 building it ourselves. We have zero.
With a per-tenant floor instead of per-message pricing, break-even falls to 443–767 customers — reachable. Peppox publicly charges €9–29 per company per month. The pricing structure matters about twelve times more than the rate. That is the single most valuable thing to win in the procurement sprint.
The one thing that cannot be deferred
OpenPeppol's Managing Committee mandated ISO/IEC 27001 for every Peppol service provider on 24 June 2026: "From 1 January 2027 onwards, a New Service Provider will only be issued a first Peppol PKI Production certificate if it holds a valid ISO/IEC 27001 certificate." White-labelling does not exempt us — OpenPeppol's own security FAQ says so. Certification takes 6–12 months.
This is also counterparty risk on the providers we are about to depend on: non-compliant providers are publicly blacklisted on 1 May 2028 and their certificates revoked on 1 Jun 2028. "Do you hold ISO 27001, and will you by October 2027?" is a pass/fail procurement question for all four.
Fast-track options, ranked
- Press all four for programmatic tenant provisioning — weeks, near-zero cost. This solves the real blocker without any accreditation. Complyance already exposes company creation and an integration-partner source type; ClearTax scopes every call by entity header.
- White-label an accredited access point under our brand — 1–3 months.
- Accredit through a wholly-owned Omani company on a licensed stack — 9–14 months, roughly €55–80k. The OTA sanctions every element of this in writing. This is the genuine fast-track.
- UAE only: be the product supplier, not the licensed provider — the amended decision lets the partner carry the licence, business-continuity certification and insurance while we carry ISO 27001. Design toward it; it is a later option.
- Acquire an accredited provider — 3–9 months, six to seven figures. Only worth revisiting if a small Oman provider is available cheaply.
Peppol certification, PKI, testbed status and ISO 27001 transfer between countries. National accreditation, the local entity and the country data specification do not.
The product
Zoho Invoice feature-for-feature is the brief. Their help guide, API reference and pricing gave us the real surface — fourteen modules, and a boundary they draw sharply.
Core — Zoho parity
| Module | What it must do | Size |
|---|---|---|
| Customers | Contacts, contact persons, labelled tax identifiers, placeholder-composed address formats, portal access, statements | M |
| Items | Product and service master with tax category, unit of measure mapped to UNECE codes, price lists. Does not exist in next2 — build from zero | M |
| Quotes → Invoices | Full lifecycle: draft, sent, viewed, partially paid, paid, overdue, void. Progress invoicing by amount, percentage or line | L |
| Recurring invoices | Schedules, auto-charge with a retry ladder, suspend on exhaustion, excess-payment and credit application order | M |
| Credit & debit notes | Coded reasons. Debit notes are a deliberate addition — Zoho ships them only in Saudi, and Oman mandates 383 as a distinct type | M |
| Payments received | FIFO and specific allocation, part-payment, cap at outstanding. Logic lifts from next2 largely intact | S |
| Expenses | Categories, receipt capture, per-organisation forwarding address, triage queue | M |
| Time tracking | Projects, tasks, timers, billable hours → invoice | M |
| Customer portal | View, accept a quote, pay, see statement. This is what makes the product feel modern | M |
| Reminders & dunning | Three-level suppression, recipient axis, expected-payment-date series. Tiering engine lifts from next2 | S |
| Reports | The standard set, all Excel-exportable — free, because export short-circuits inside the grid runner | M |
| Settings | Organisation, tax rates, numbering series, templates, reminder rules, users, portal, email. Routinely underestimated at ~40% of the real build | L |
Payables — the deliberate departure from Zoho
Zoho's own line is Invoice = receivables; Books = receivables, payables and accounting. We move payables inside the boundary and leave the ledger outside it. No chart of accounts, no journals, no bank feeds, no financial statements — but a full inbound side, because both regulators require a business to use one provider for both directions. A receivables-only product loses the deal to whoever does both.
| Payables capability | What it does | Size |
|---|---|---|
| Inbound Peppol inbox | Receive supplier e-invoices at corner 4, filterable and paginated | M |
| Acknowledge / dispute | Wire actions, not internal status — the acknowledgement drives the corner 3→4 transition and the tax document to the authority; a dispute is a message-level rejection | M |
| Supplier master | Match on tax identifier or Peppol ID, auto-create on first receipt | S |
| Automatic bill registration | Inbound document → payable, with supplier liability accrued and VAT input recorded | L |
| Approval & payment scheduling | Light approval route, due dates, AP aging, payment runs | M |
| VAT input / output summary | Both sides of the book in one place | S |
Once we hold both directions of a business's invoicing, a VAT return helper is nearly free — the data is already reconciled and coded. That is also the natural home for the paid AI tier: duplicate-supplier-invoice detection, anomaly flags on inbound bills, coding suggestions, and supplier-behaviour analytics. None of it needs a general ledger.
The interface consequence: the payables inbox has buttons that change state on the Peppol network, which is unusual for an AP screen. Acknowledge and dispute must read as irreversible outbound actions, not as list-management. This is a specific thing to get right in the UI work.
Where we beat Zoho
- The e-invoice cockpit. Already built — see below.
- Retainer / prepayment invoices with a real UI. They exist in Zoho's API with no interface. Gulf contracting runs on advances, and Oman has a dedicated prepayment type (386).
- Debit notes, period locking, immutable numbering, outbound webhooks, real role-based access — all absent from Zoho Invoice, all cheap for us, all things a compliance buyer asks about.
- Arabic, properly. Zoho's Saudi edition does Arabic fields; we do the whole document and the whole interface.
The cockpit — already built, twice
The e-invoicing engine is a port, not a greenfield build. Two implementations exist: the JobNext production system (16 SQL migrations, a worker, QR, crypto, an ASP adapter layer, two UI screens, deployed) and a partial port already inside next2 in our exact target stack — api/app/einv/ at 1,571 lines, web/src/einv/ at 970 lines, three Alembic migrations, fully nav-wired, already fixing two defects the production version carries.
The validator is the worklist. Everything derivable is derived, everything defaultable is defaulted, and what remains in "Needs attention" is genuinely a human decision — presented as seven dropdowns, each labelled by its business term and bound to the right code list, with Save & resubmit. For a self-serve SMB product that is the difference between compliance being terrifying and compliance being seven dropdowns. The enrichment layer is the main piece missing from the next2 port.
Arabic on day one
Oman's VAT Executive Regulations Article 144: "The issuance of the tax invoices shall be in Arabic. The tax invoice may be issued in English provided an Arabic translation is provided upon the Authority's request." Arabic is the default; English is the exception. The UAE imposes no language requirement but its authority can demand Arabic on audit.
| PDF engine | Presentation forms | Arabic title recoverable | Amounts recoverable |
|---|---|---|---|
| WeasyPrint — already next2's engine | 0 | Exact | Exact |
| Chromium print-to-PDF | 504 | Partial | Exact |
| wkhtmltopdf | 469 | Not found | Exact |
| ReportLab + reshaper | 280 | Partial | Not found |
Verified — four engines rendered the same bilingual Omani invoice, checked three ways. Presentation forms count baked-in shaped glyphs; zero means a clean logical-order text layer, which PDF/A-3 with embedded XML, search and audit all depend on.
A phone number rendered reversed in every HTML engine when uninsulated. The standard fix — wrapping in <bdi> — works in the browser and silently fails in WeasyPrint, because a digit-only string has no strong directional character. Correct in development, wrong in the customer's PDF. The fix is to inject Unicode isolate characters in the data layer, which then holds across browser, PDF, email and CSV. No mainstream i18n library does this for you.
Two more traps: ar-OM, ar-SA, ar-QA, ar-KW and ar-BH all default to Arabic-Indic numerals (ar-AE does not), so invoice numbers and tax registration numbers must be pinned to Western digits to match the machine-readable payload. And no production-grade Arabic font is installed on our build box — Noto Sans Arabic must be pinned as a build artifact, and it was the only candidate of five carrying tabular figures, without which decimal points do not align in an amounts column.
Connectors
Eighteen targets were assessed. The order is set by GCC installed base, not by API quality — and those turn out to be inversely correlated.
- Month 1: CSV/Excel import with a real validator, a public REST API with keys and a sandbox, email/SFTP drop. The public API turns every GCC reseller and systems integrator into a channel building at their own cost.
- Months 2–3: the on-prem agent and Tally together — one project, because Tally forces the agent to be genuinely general.
- Months 3–4: the cloud tier — Zoho Books, QuickBooks Online, Xero, Odoo.
- Months 4–6: SAP Business One, Sage 300, Dynamics 365 Business Central.
- Beyond: deal-led only.
On-prem write-back is inherently asynchronous. Saudi clears in about two seconds; the customer's Tally machine may not be switched on until tomorrow. CLEARED_PENDING_WRITEBACK must be a first-class state with retry, TTL and alerting — not an error. Also: no ERP field is large enough to hold a QR payload (300–700+ characters against 30–60 available), so status write-back belongs in a side table keyed on the document number, in every ERP.
Build the connectors; buy nothing. The unified-API vendors cover 7–14 of the 18, but Tally, Focus and Sage 300 are covered by none of them, our payload fits no unified model, and not one has a Middle East region — a live commercial objection when the payload is GCC tax data. The sharpest single opportunity found: UAE PINT AE for SAP Business One, where the incumbents are all chasing S/4HANA.
Pricing
Every number below moves once we have a wholesale provider rate. Nothing here should be published or quoted until the procurement sprint closes.
The constraint
Zoho Invoice is free, forever — two users, 500 invoices a year, no paid tier at all; you upgrade sideways to Zoho Books. Wafeq sets the practical ceiling at AED 57 per month with unlimited users. We cannot win on price. We win on the mandate.
Against that, the only published provider cost is $1.10 per B2B invoice at list. A customer issuing 100 invoices a month would cost roughly $110 in cost-of-sale against about $16 in revenue. Per-invoice provider pricing at anything near list destroys the subscription model outright.
Three things that soften it
- That is a list price; volume wholesale rates will be materially lower — and none of the four will quote without a conversation.
- Every UAE business gets 100 free e-invoices per customer per year by law. Our exchange cost at the true bottom of the market is zero, which is what makes a free tier viable.
- Unlimited network access exists in the market at around €300 per year, and per-company pricing at €9–29 per month.
Working shape
| Tier | Who | Indicative | Includes |
|---|---|---|---|
| Free | Micro-businesses, the long tail | 0 | Invoicing, Arabic documents, and e-invoicing within the statutory free allowance. The allowance is the tier boundary — a regulatory gift, not a subsidy |
| Standard | SMB, our core | AED 55–75/mo | Unlimited documents within a fair-use band, cockpit, AP inbox, portal, reminders |
| Bridge | Companies keeping their ERP | per connector | Connector, agent, write-back, archive. Sold on the mandate, priced against the cost of non-compliance rather than against Zoho |
| Metered overage | High-volume issuers | per document | Only above the fair-use band, and only once our own wholesale rate is known |
Publishing a price is itself the differentiator. No accredited provider does. A business facing a deadline and unable to discover the cost of compliance without a sales call is the customer we are built for.
Name and website
Decided: InvoiceNext, joining JobNext, EstimateNext, BidNext and TalentNext. Mizan was rejected as too wide, Raseeda because it reads as receipt rather than balance.
| invoicenext | .com | .ai | .io | .ae | .om |
|---|---|---|---|---|---|
| Status, 12 Aug 2026 | Parked | Free | Free | Free | Free |
invoicenext.com was registered in 2020, sits parked at CrazyDomains with no address record and nothing served — and its registry expiry is 1 September 2026. Place a drop-catch backorder now, and register .ai, .io, .ae and .om immediately as cheap insurance. If the .com drops we take it; otherwise launch on .ai.
Verified availability — whois and dig, 12 Aug 2026, with random-string probes confirming the regional registries have no wildcard. Unverified trademark — no formal search has been run. Nothing gets registered until UAE Ministry of Economy, Oman MOCIIP and WIPO searches are complete.
Two things to carry into the trademark work
- InvoiceNext is a descriptive mark, which is weak by construction — hard to register, hard to defend against an "InvoiceNow" or a "NextInvoice." A known trade-off, accepted for family fit and clarity.
- FatooraNext was rejected for a reason worth recording. ZATCA's Saudi portal is Fatoora and Oman's system is Fawtara — both target markets plus the largest neighbouring one. Beyond trademark weakness, searching the brand name would return the government portal, making us permanently invisible for our own name; and a name one letter from the national tax platform risks reading as official endorsement, which is exactly wrong for a vendor that is deliberately not accredited.
Website
A separate marketing site from the application, both served by the existing reverse proxy, which already handles multiple hostnames with automatic certificates. The site's job is narrow and unusual for this market: state the price, state the deadline, and let someone sign up. A deadline countdown by turnover band, a two-question "am I in scope and when" checker, and pricing above the fold. Bilingual from the first commit, not retrofitted.
Architecture
PostgreSQL, and what that does to reuse
Decided: PostgreSQL. Native row-level security, no per-tenant licensing, and the right engine for thousands of small tenants on a free tier — a different shape entirely from next2's handful of large ones.
Next2's kernel is raw database access with no ORM, written in T‑SQL. On PostgreSQL it does not port — not statement by statement, not at all. The shared-kernel package idea therefore shrinks to pure-Python modules plus design patterns, and we write the tenancy and security layer fresh for Postgres. This is a simplification, not a loss: one kernel, one engine, no dialect abstraction to maintain across two products.
Repository structure
Separate repository, own VM, our own kernel. Independent of the database choice, the numbers rule out sharing next2's: 286 of its 321 migrations reference the core or security schemas, 214 of them altering the row-level security policy, with kernel DDL interleaved at chain positions 1, 2, 3, 5, 2950, 3000, 3050, 3120, 4020 and 5002. That chain cannot be split against a live production database, which rules out both "a module inside next2" and "a monorepo with a shared schema kernel."
What crosses over is a versioned pure-Python package — money and currency, the import framework core, the approvals effects registry, grid and export — plus the conformance-test technique already keeping next2's Python and TypeScript money modules in sync. No shared schema, no shared migration chain, no cross-repository revision link.
The binding constraint is CI, not hosting
A second website is one line in the reverse-proxy config. But there is one self-hosted runner with one job slot, and next2's own traffic already produces measured queue waits of 30 and 37 minutes against a 34.5-minute median. Adding a second product would slow both. A separate VM at roughly $30 per month resolves it. Incidentally, the current box holds 38 GB of reclaimable build cache — the deploy script prunes images but never the builder.
What we take from next2
| Component | Verdict | Note |
|---|---|---|
| Money & currency module | Lift | 313 lines, zero non-standard imports, already knows OMR/BHD/KWD are 3 decimals and AED/SAR are 2 |
| E-invoicing module | Lift | Described as already regime-neutral; only ~12 lines couple it to the ERP's invoice table |
| Import framework core | Lift | 1,534 lines, fully domain-neutral |
| Grid + Excel export | Lift | Export short-circuits inside the grid runner — every register gets it with no router changes |
| Approvals kernel | Lift | The effects registry imports no domain module; 20 modules register into it |
| Print / PDF engine | Lift | WeasyPrint, server-side resolution — and the Arabic winner |
| Tenancy & security kernel | Rewrite | Design is unusually clean and worth copying — but it is T‑SQL, so PostgreSQL means writing it fresh |
| Inbound / AP rails | Build | Supplier master, bill registration, acknowledge and dispute as wire actions — none of it exists |
| Dunning, aging, settlement allocation | Extract | ~1,100 Python and 900 TypeScript lines lift; the engines are job-coupled but the invoice tables are not |
| Document numbering | Extract | No central module exists — ten near-identical copies. Consolidate to one |
| Item / product master | Build | Does not exist at all in next2 |
| Tax determination | Build | Currently one line of arithmetic — no reverse charge, place of supply or exempt categories |
| Signup, plans, metering | Build | Nothing exists. For this product it is the entire commercial layer |
| Legacy screens module | Discard | 4,460 lines, every file embedding legacy SQL |
Next2's invoices carry no customer identifier — identity joins on a free-text customer name. And aging sums across currencies blindly. Both are exactly the kind of thing that gets copied forward silently in a fork.
The one guard to carry over regardless
The information-architecture budget test: a CI-enforced numeric ceiling on navigation — total rows between 45 and 95, no workspace over 28, and every rail row must exist in the command palette. It is what stops a product accreting screens until it is unusable, and it is the most transferable thing in the repository.
Build plan
Same methodology as next2: parallel worktree missions with disjoint ownership, each on its own database, a checkpointed build journal, adversarial review before merge, and a burn-down matrix as the single instrument of progress.
Commercial and legal — consumes no engineering capacity
Owner-led and calendar-bound. None of it competes with the build.
- Domain drop-catch on invoicenext.com before 1 September; register the other four now.
- Settle the ISO 27001 certificate-holder question, then sign the engagement letter.
- Procurement sprint across all four providers. Pass/fail: programmatic tenant provisioning, a per-tenant price floor, and ISO 27001 held or committed by Oct 2027.
- Trademark searches before any registration.
- Written questions to the Oman Tax Authority and the UAE Ministry of Finance — including Taxilla's accreditation reference.
- Confirm the corner-1 reading with UAE tax counsel.
Spine and the universal on-ramp
- Repository, kernel package, CI, second VM, domain and certificates.
- Tenancy, auth, signup — the self-serve flow next2 has never had.
- Customers, items, invoices, credit and debit notes, receipts.
- CSV/Excel import with a real validator; public REST API with keys and a sandbox.
- Bilingual document rendering with the isolate-injection rule from the first commit.
Compliance engine — both directions
- Port the e-invoicing module out of next2 (Python lifts; the SQL layer is rewritten for Postgres) and cut the twelve-line ERP coupling.
- Build the enrichment layer — the missing half, and the product's best idea.
- Inbound rails: Peppol inbox, supplier matching, automatic bill registration, and acknowledge/dispute as wire actions.
- SMARTeIS adapter completed and the four documented defects fixed; Complyance adapter built against its free sandbox as the abstraction's stress test.
- QR constants verified against the OTA specification — currently best-guess.
- Archive, audit trail, withdrawal and compensating actions.
Product depth and the Arabic interface
- Quotes, progress invoicing, recurring, retainers, expenses, time tracking.
- Customer portal, reminders and dunning, reports.
- Full Arabic interface with logical properties, pseudo-locale QA and RTL regression tests.
- The settings surface — budgeted honestly at 40% of the build.
Connectors and the Oman pilot
- On-prem agent and Tally as one project.
- Cloud tier: Zoho Books, QuickBooks Online, Xero, Odoo.
- Oman pilot with a real customer through SMARTeIS.
- Marketing site, published pricing, the scope-and-deadline checker.
Reopen the accreditation question
Not on a date — on any of: provider spend reaching €130k a year or 2.6m documents; no vendor offering both self-serve provisioning and floor-free pricing; a counterparty failing its own ISO deadline; or a funding event.
Decisions taken, and what remains
Resolved 12 August 2026. Three items remain open, and two of them have external clocks.
Settled
| Question | Ruling | |
|---|---|---|
| A | Priority against the demo-ready mandate | Displaces it. Run to completion — demo-ready with several providers — then return to next2 |
| B | ISO 27001 | Start it. Certify via the India entity for audit cost, scoped to the service end-to-end |
| C | Database | PostgreSQL |
| D | Name | InvoiceNext, joining the –Next family |
| E | Provider conversations | Owner-led, handled separately |
| F | Scope | Full five-corner — payables as well as receivables. AI features later, on paid tiers |
Open, with clocks
The scope statement is printed on the certificate and is what a regulator reads. OpenPeppol requires it of the entity holding the Peppol production certificate; Oman requires it of the accreditation applicant. If an Omani entity applies, a certificate naming only the India company may not satisfy. Resolve with the certification body and the OTA first — either a multi-site certificate covering both entities, or one issued to the applicant with India as an in-scope location. Expensive to change after the Stage 2 audit.
invoicenext.com expires 1 September 2026. Drop-catch now; register the other four immediately.
UAE Ministry of Economy, Oman MOCIIP, WIPO. InvoiceNext is descriptive and therefore a weak mark — worth knowing what is already registered nearby before committing to signage.
ISO 27001 — the practical shape
- It certifies a management system with a scope you define — neither inherently organisation-wide nor per-product. Scope it to the InvoiceNext service, not to "the India company's operations."
- Use an accredited certification body (an IAF signatory — NABCB in India). Non-accredited certificates are cheap and get rejected.
- Budget three months of the system genuinely operating before the Stage 2 audit. The 6–12 month estimate is real, not padded.
- The UAE additionally requires ISO 22301 for business continuity — same scope logic, and cheaper done alongside than twice.
What we don't know
Listed because the failure mode of a sweep this size is a confident, plausible, wrong finding surviving into the plan.
- Unverified Taxilla's Oman accreditation. Claimed on their site with no date, number or register link. I previously reported the opposite based on a list published by a competitor — that was wrong to state as fact. The OTA appears to publish no public directory.
- Unverified Oman's accredited-provider count. Two streams say 11 and 22. Neither is the OTA's own register.
- Unverified Trademark clearance on every candidate name. No formal search has been run.
- Unverified Which Sage X3 version ships the GraphQL API, and whether it is cloud-only. This single unknown gates our largest connector estimate. A one-day spike against the public sandbox resolves it.
- Secondary Money precision in Oman — 2 or 3 decimals. The provider has not answered since 15 July. The architecture's own QR examples use 3; the scenario workbook assumes 2. Make it configurable.
- Secondary The corner-1 "no accreditation needed" reading. Drawn from the operative texts; the Ministry has never published those exact words. Confirm with counsel before contracting.
- Unverified Our own QR implementation. The tag numbers and UUID namespace in the existing code are explicitly best-guess constants, never validated against the OTA specification. Deliberately isolated so verification is a constants edit — but it is not done.
The SMARTeIS adapter running in JobNext production has four bugs against the v2.1 specification — a wrong inbound list path, a malformed acknowledgement call, and an inbound mapper using outbound field names that would return empty records. That is the OIG pilot, not this product. It needs raising separately.
Research index
All findings are on disk at ~/projects/einvoicing/research/. Roughly 10,000 lines with citations.
| Doc | Subject | Headline |
|---|---|---|
| 01 | Zoho Invoice inventory | 2,419 lines — 14 modules, the settings surface, the boundary, and no paid tier |
| 02 | Oman OTA / PINT-OM spec | 1,437 lines — full business-term table, all 20 use cases, code lists, validation rules |
| 03 | SMARTeIS + Taxilla | Both flows, the capability flag set, and the proposed adapter interface |
| 04 | Existing cockpit inventory | Screen-by-screen spec, portable domain logic, 13 lessons already paid for |
| 05 | Mandate landscape | 1,130 lines, 73 citations — the dates, the accreditation answer, market sizing |
| 06 | ERP connectors | 1,780 lines — 18 targets, the on-prem agent, build-versus-buy |
| 07 | Arabic/RTL + naming | Four PDF engines tested empirically; 40 names, domains checked live |
| 08 | Next2 reuse | 600 lines — the reuse table, the i18n cost, the migration mechanism |
| 09 | Complyance + ClearTax | The four-way comparison and 14 new capability flags |
| 10 | Becoming an ASP | ~20,500 words — requirements, break-even model, the ISO 27001 clock |