NetSuite
The financial and order system of record, reached through an own middleware proxy, supplying transactions, items, customers and the ledger.
The system of record for orders and finance. CCC reaches it through an in-house middleware proxy rather than directly. CCC depends on both the proxy and the upstream service; the request contract it implements is the proxy's.
What it delivers
| Feed | Notes |
|---|---|
| Seven transaction types | salesorder, invoice, itemfulfillment, prepayment, returnauthorization, creditmemo, itemreceipt |
| Items | The catalogue as finance sees it |
| Customers | Upstream customer records, which are not CCC's computed customers |
| Sales channels, categories | Dimensions |
| Paazl shipping options | Shipping method reference |
| Subsidiaries, accounts, accounting periods | Ledger structure |
| GL account totals | Plain and extended actuals. Budgets are loaded separately from repository CSVs |
The seven transaction types are the backbone. Each has a header and classification. Line-bearing types have item and non-inventory lines, with discounts and taxes on financial documents. Prepayments have no lines; shipments and receipts have no discount or tax tables. See data model.
Cadence and window
Today's transactions are re-queued through the day, so recent data refreshes continuously. A daily fan-out covers the wider set overnight.
It can be asked for a specific date, which is what makes it backfillable, unlike GA4 order attribution. A historic reload is a matter of queueing the days you want.
CCC holds NetSuite data from 2022 onward. Earlier history comes from verkoopdump.
Quirks and limits
- The proxy serves some calls one at a time. The account total endpoints answer a second concurrent caller with an immediate refusal, which is why those jobs run on offset minutes and check whether their own type is already running.
- A transaction arrives before its downstream documents do. An order exists before its invoice, which is why expected margin exists.
- Cancelled and closed orders both arrive and are both stored. Both mean the order did not happen.
Where it lands
ns_-prefixed tables for reference data, and the seven transaction families under their own names. Ledger data lands under gl_.
Related
- Sales orders
- The pipeline
- verkoopdump, which holds the earlier history
Evidence
Feed list from AGENTS.md, The application. Transaction types and their table names from config/reference/cm_transactiontypes.json. Table family shape from AGENTS.md, Models and database. Concurrency behaviour and the offset-minute mitigation from AGENTS.md, Jobs and the batches queue. Basis: code-checked against the current implementation.
The proxy's own rate limits and availability are properties of that service. What this repository records is the behaviour CCC sees: the two account total endpoints serve one call at a time and answer a second caller with an immediate 503, which is what the getrunning() guard and the offset cron minutes exist for.
- Type
source - Status
active - Updated
2026-09-14 - Created
2026-09-13