Every feed. Any format. One schema.
Distributors carry a dozen vendors — each with its own invoice format, its own cadence, its own quirks. The ingestion layer normalises all of them to a single canonical line-level schema so everything downstream just works.
Whatever the vendor sends, we take it.
API connectors
Maintained, versioned connectors for Microsoft Partner Center (CSP + NCE), AWS Cost & Usage, Google Cloud Billing, Dropsuite, Datto, N-able, Sophos Central, Bitdefender, Acronis, and Rubrik. Connectors are owned by us — breakage from vendor API changes is our problem, not yours.
SFTP + CSV drops
Watched SFTP folders with schema validation on every drop. When a vendor changes their CSV format mid-month — and they do — the ingestion layer flags the schema drift and holds the file rather than silently mis-parsing it.
PDF invoices
Structured PDF extraction for vendors that still only send line-item PDFs. Every extracted line preserves the source PDF reference so disputes come with evidence attached.
Marketplace feeds
AWS Marketplace, Azure Marketplace, and Google Cloud Marketplace — ingested as first-class sources, including vendor-of-record splits and co-sell credits where applicable.
Email-to-ingest
For the long tail of small vendors that still email invoices. A dedicated inbox receives, extracts, and classifies — with a human-in-the-loop queue for anything the parser is not confident about.
Custom connectors
Distributor-specific vendor or a legacy ERP feed? We build the connector and maintain it. Scoped during onboarding, live usually within two weeks.
One schema. Every vendor. Traceable.
Downstream — reconciliation, billing, margin, portal — is only as clean as the schema underneath. Every vendor feed resolves to the same canonical rows.
canonical line schema: source_id — SHA256 of source doc source_row — row ref inside source vendor — microsoft | dropsuite | … partner_tenant — canonical partner id end_customer — resolved tenant graph sku — normalised vendor sku period_start — ISO period_end — ISO qty — with proration unit_cost_ccy — vendor currency unit_cost_aud — FX applied, time of recon pricing_rule — versioned rule id ingest_ts — RFC 3339 provenance — full audit chain
Why this matters
- Provenance is first-class. Every line preserves its source hash and row reference, so you can always answer "where did this number come from?"
- FX is deterministic. Both vendor-currency and AUD values are stored with the FX rate captured at reconciliation time. Margin calculations don't drift.
- Pricing rules are versioned in time. Every line records the exact pricing rule (with version id) that priced it. Back-dated pricing changes are explicit, not silent.
- Tenant graphs are continuous. When an end-customer gets renamed, merged, or split across vendors, the canonical tenant graph keeps history intact.
Ingestion you don't have to watch.
Schema-drift detection
Every drop is validated against the expected schema. An extra column, a renamed header, a changed date format — all held in an exceptions queue rather than silently corrupting the period.
Idempotent replays
Re-ingesting a file is safe. The engine deduplicates by source hash, so operators can replay a period without fear of double-booking.
SLA monitoring
Expected vendor feeds that haven't arrived by their SLA window alert your operations team. No more "we missed the invoice" on day five of close.
Bring us your messiest vendor feed.
If we can ingest and normalise it cleanly, we'll show you. If we can't, you've lost twenty minutes.