
November 25, 2025
Multi-Tenant SaaS Platform for Digital License Distribution
Business Context
A digital distribution company needed a platform to automate license management and billing for their reseller network. The business model involved distributing licenses for an enterprise cloud storage solution through a network of partners, each requiring independent billing while operating under a single vendor account.
Manual processes for provisioning licenses and tracking payments created operational overhead and delayed fulfillment. The client required a system that could handle multi-tenant operations, automate invoice generation, and coordinate license provisioning with payment confirmation.
Problems
-
Complex reseller hierarchy. The platform needed to support a distributor managing multiple resellers, each with independent billing relationships while sharing a single vendor API credential.
-
Billing and provisioning coordination. Resellers required payment confirmation before license provisioning, while the distributor needed immediate provisioning for direct sales. This dual model required different workflows within the same system.
-
Vendor API constraints. The cloud storage vendor's API required context scoping for each partner. We needed to validate these constraints through testing before committing to an architecture.
-
State synchronization. Changes made directly through the vendor's admin console needed to sync back to the platform without overwriting user-initiated changes.
Solution
Discovery and Validation
Before implementation, I worked with the client's operations team and the cloud storage vendor's engineering contacts to map out the integration requirements. This involved:
- Reviewing vendor API documentation and identifying gaps
- Scheduling calls with vendor technical teams to clarify edge cases
- Testing API behavior against actual partner accounts
- Documenting which operations required special handling
This discovery phase revealed several constraints that shaped the architecture. Understanding these before development prevented costly rework.
Architecture Planning
Based on the validated requirements, I designed an event-driven architecture with domain-separated services. The goal was to keep each integration isolated so failures in one area wouldn't cascade to others.
The key architectural decision was treating billing and provisioning as separate concerns coordinated through events. This meant:
- Billing operations could complete independently of vendor API availability
- Provisioning could retry without affecting already-confirmed payments
- Each system could be tested and deployed independently
Working with the Operations Team
I collaborated with the client's operations staff to understand their current manual workflows. This revealed several automation opportunities we hadn't initially identified:
- Trial period handling with automatic conversion
- Promotional pricing that transitioned to standard rates on renewal
- Synchronization when customers modified their accounts directly with the vendor
These conversations informed the feature set and prevented building capabilities the team wouldn't actually use.
Billing Integration
I integrated with their accounting platform (a system similar to QuickBooks) for invoice generation and payment tracking. The integration required coordinating product catalogs, invoice generation, and payment confirmation webhooks.
The webhook integration required careful handling to meet the accounting platform's strict timeout requirements while still processing payments reliably.
Vendor Integration
The cloud storage vendor provided a reseller API that required specific scoping for partner operations. I worked with their engineering team to:
- Validate authentication patterns for multi-tenant scenarios
- Test edge cases around subscription state transitions
- Document correct handling for cancellations and reinstatements
This collaboration ensured our implementation aligned with vendor expectations and reduced support issues after launch.
Technical Approach
Stack
- Golang: Type safety caught integration errors at compile time.
- gRPC: Shared type definitions between services prevented integration drift.
- Event messaging: Event-driven coordination decoupled services and provided retry boundaries with RabbitMQ.
- PostgreSQL: Relational model suited subscription state transitions and audit requirements.
- Docker Compose: Single-server deployment reduced operational complexity.
Results
-
Delivered multi-tenant platform supporting distributor and reseller hierarchy with independent billing.
-
Validated integration approaches through coordination with vendor engineering before implementation.
-
Implemented event-driven coordination between billing and provisioning systems.
Conclusion
This project required close collaboration with the client's operations team and their vendor's engineers to validate integration approaches before committing to architecture. The event-driven design provided isolation between systems.
Key process elements:
- Discovery phase with vendor engineering to validate constraints
- Operations team collaboration to understand actual workflows
- Event-driven architecture preventing cascading failures
For multi-tenant platforms with external vendor dependencies, this demonstrates the value of validating integration constraints through direct collaboration before implementation.