Developers

The canonical data model

The shared objects every ERP connects through, which is why changing ERP is one adapter.

A product tour of InvoiceIQ by Analytos: Accounts Payable and Accounts Receivable on one platform.

The objects

ObjectWhat it isAPAR
PartyWho the document is from or forVendorCustomer
OrderThe commitment, with its lines and what remains to billPurchase orderSales order
MovementThe goods actually moving, with its linesItem receiptItem fulfilment
DocumentThe incoming paperVendor invoiceBill of lading
ResultWhat is written back, with its linesVendor billCustomer invoice
CodingThe account and dimensions on each result lineExpense GL · class · departmentRevenue GL · class · tax, from the order line
ChargesTax, freight and other non-goods linesPlaced by rulePlaced by rule

What an adapter implements

  • Fetch the order, with its lines and remaining quantities.
  • Fetch what moved against it, with its lines and what has already been consumed.
  • Translate the incoming document in, and the result out.
  • Name the dimensions this ERP carries.
  • Translate the ERP’s status codes — exactly once, here. No engine code ever sees them.

The NetSuite adapter is the contract. Stockly, Analytos’s own ERP, implements the posting path. The QuickBooks adapter is a stub. A CDM Objects page in the product shows exactly which ERP field each object maps to for the connected system.

Why it matters

The matching kernel is only ever given role names — commitment, fulfilment, output. It never learns whether it is buying or selling, which is why the same tested code decides both directions, and why adding the second product is a configuration change rather than a second implementation.

The API

Every screen in the product is driven by the same REST API: upload, status, inbox, rules, matching policies and posting are all callable. The live documentation is served by the running service.

Want to see it rather than read about it?

A walkthrough takes an hour and starts with your own documents.