ERP / Billing
Billing status, invoices, and subscription/contract data — ties financial reality to the customer profile.
High-Level Design
ERP/Billing system → .NET Core Connector on Azure → downstream activation.
💼 Business Context
- Billing status (past due, at-risk, paid) is a direct churn and revenue-risk signal most CX platforms never see
- Enables coordinated dunning/collections communication instead of a separate, disconnected finance workflow
- Owned by Finance / RevOps, shared with Customer Success
🔌 Technical Overview
ERP and billing systems (SAP, NetSuite, Stripe Billing) rarely expose real-time webhooks for every event — a .NET Core batch connector runs on an Azure Functions Timer trigger, pulling invoice and payment status via each system's API and normalizing it through Cxos.Ingestion.Client. Payment-provider webhooks (e.g., Stripe's invoice.payment_failed) are handled in near-real-time by a dedicated Azure Function where available.
Synced Events
💾 Sample Billing Event
{
"event": "payment_failed",
"event_id": "a7d2e9f1-4c8b-4d3a-9e1f-6a2c8d0b7f34",
"timestamp": "2026-08-01T03:15:00Z",
"user_id": "cust_004821",
"context": { "channel": "billing", "platform": "stripe" },
"properties": { "invoice_id": "inv_9931", "amount_due": 4999, "currency": "INR", "attempt": 2 }
}
🔗 Integration Points
- .NET Core batch connector (Azure Functions Timer) for ERP/billing systems without full webhook coverage
- Stripe/payment-provider webhooks (near-real-time) via a dedicated Azure Function
- Cxos.Ingestion.Client NuGet package
- Activation API — triggers dunning email/SMS sequences and account-health alerts to Customer Success
🧰 Services Consumed
- Owning microservice —
Cxos.Connectors.ErpBilling(see the Full Application Service Map) - No dedicated database — stateless connector (see Platform Connectors above)
⚠️ Non-Functional Considerations
- Scale: account/invoice volume is modest relative to behavioral events; batch sync is sufficient for most fields
- Latency: payment-failure events benefit from near-real-time handling to trigger timely dunning communication
- Reliability: batch connector checkpoints the last successfully synced invoice ID for safe resume
- Security/Privacy: no raw card data is stored — only tokenized payment status and invoice metadata cross the ingestion boundary, access-controlled via Azure AD
🎯 Enterprise Example
A SaaS company's Stripe webhook fires invoice.payment_failed; the Activation API triggers a dunning email within minutes and flags the account as at-risk in the Customer Success dashboard — cutting involuntary churn from failed payments by 25% after the coordinated dunning + CS outreach workflow launched.