Hierarchical Billing: Parent-Child Invoice Structures Explained | Zenskar

When an enterprise customer signs a master agreement, they're usually signing on behalf of multiple subsidiaries. One contract. One parent entity paying the invoice. But five, ten, or twenty subsidiaries actually using the software.
For your billing team, that's straightforward enough. Send one invoice to the parent, collect payment, done. For your finance and RevRec team, it's a different problem entirely. ASC 606 requires you to recognize revenue where the performance obligation is satisfied, not where the invoice goes. And in a parent-child structure, those are rarely the same place.
This is the core challenge of hierarchical billing, and it's one that most billing platforms weren't built to solve. They handle the invoice routing. They don't handle the revenue allocation.
What follows is a finance and RevRec guide to parent-child invoice structures — how they work, where they break, and what it takes to handle them properly at scale.
What is hierarchical billing? (And why it creates finance problems)
Hierarchical billing is a billing structure where a parent entity is invoiced and pays on behalf of one or more subsidiary entities that actually consume the product or service. The parent sits at the top of the account hierarchy, subsidiaries sit beneath it, and the invoice flows to the top regardless of where usage or delivery occurs.
On the surface, this simplifies collections. One invoice, one payment, one point of contact. But underneath that simplicity is a structural mismatch that creates real problems for finance teams.
Why does hierarchical billing create finance problems?
Most billing platforms are built around a simple assumption: the entity that receives the invoice is the entity that receives the service. In a parent-child structure, that assumption breaks immediately.
The parent receives the invoice. The subsidiaries receive the service. And under ASC 606-10-25-1, your obligation is to identify the contract with the customer and recognize revenue when, or as, performance obligations are satisfied. That means revenue belongs to the entities receiving the service, not the entity cutting the check.
When your billing platform has no mechanism to separate these two things, your RevRec team fills the gap manually. Spreadsheets, allocation tables, monthly reconciliations. At ten subsidiaries, it's painful. At fifty, it breaks entirely.
The billing entity vs. revenue entity problem
The most important distinction in hierarchical billing is one that most billing platforms ignore entirely: the billing entity and the revenue entity are not the same thing, and treating them as if they are is the root cause of most parent-child RevRec problems.
Here's how the two differ:
Why does this distinction matter for revenue recognition?
Under ASC 606, revenue is recognized when a performance obligation is satisfied. Performance obligations are satisfied at the entity level, meaning the subsidiary that uses the software, not the parent that pays for it.
If your billing platform allocates revenue to the parent by default, your RevRec is wrong by design. Every month, your team has to manually reallocate revenue across subsidiaries, reconcile the billing records, and ensure each entity's recognition schedule reflects actual service delivery.
At one or two subsidiaries, this is manageable. At enterprise scale, with dozens of subsidiaries across multiple geographies and currencies, it becomes one of the most time-intensive problems in your close process.
What does correct revenue allocation look like?
Each subsidiary should carry its own independent revenue recognition schedule, reflecting the performance obligations delivered to that entity specifically. The parent's invoice is a payment mechanism. It has no bearing on how revenue is allocated or when it is recognized across the entities beneath it.
The billing layer and the RevRec layer need to operate independently, connected but not conflated.
How revenue recognition works in parent-child structures?
Revenue recognition in a parent-child structure follows the same ASC 606 framework as any other contract. The difference is that you're applying it across multiple entities simultaneously, each with their own performance obligations, recognition timelines, and sometimes their own currencies.
The process breaks down into three steps.
- Identify performance obligations per subsidiary.
Each subsidiary's usage defines its own set of performance obligations. If Subsidiary A uses your analytics module and Subsidiary B uses your core platform, those are distinct obligations with distinct recognition treatments, even if they sit under the same parent contract.
- Allocate transaction price across entities.
The total contract value sits at the parent level. Your RevRec engine needs to allocate that value down to each subsidiary based on their respective standalone selling prices, not split it evenly or default it to the parent.
- Recognize revenue independently per entity.
Once allocated, each subsidiary's revenue is recognized on its own schedule. One subsidiary may be on a ratable 12-month recognition. Another may have a milestone-based obligation. These run independently, regardless of when the parent pays.
What happens when subsidiaries have different contract terms?
This is where parent-child RevRec gets genuinely complex. If subsidiaries are added mid-contract, terminate early, or upgrade independently, each event triggers a reassessment of that entity's performance obligations and allocated transaction price, without affecting the others.
Your billing platform needs to handle these modifications at the subsidiary level while keeping the parent invoice intact.
4 hierarchical billing scenarios finance teams face
Most parent-child billing problems fall into a handful of recurring patterns. Here's how each one works and what it means for your RevRec treatment.
Scenario 1: Parent pays, all subsidiaries use equally
This is the simplest case. Transaction price is divided across subsidiaries based on equal consumption, and each entity runs on the same ratable recognition schedule. Even here, most billing platforms default revenue to the parent rather than allocating it down automatically.
Scenario 2: Parent pays, subsidiaries have different usage
This is the most common enterprise scenario. Each subsidiary uses a different product tier, module, or volume. Transaction price must be allocated by standalone selling price per entity, and each subsidiary carries its own independent recognition schedule. Manual allocation at this level is where most RevRec errors originate.
Scenario 3: Subsidiary added mid-contract
When a new subsidiary is added under an existing parent agreement, it triggers a contract modification under ASC 606. You need to assess whether the modification adds distinct performance obligations at a standalone selling price, and if so, treat it as a separate contract. If not, you reassess and reallocate across all entities from the modification date.
Scenario 4: Subsidiary terminates early
Early termination at the subsidiary level doesn't cancel the parent contract. But it does require you to remove that entity's performance obligations, recognize any remaining deferred revenue appropriately, and reallocate the transaction price across the remaining subsidiaries going forward.
Architecture: What your billing system must handle
Most billing platforms were built for simplicity. One customer, one invoice, one revenue line. Parent-child structures expose the limits of that architecture quickly.
Here's what a billing system actually needs to handle hierarchical contracts properly:
- Parent-level invoicing with subsidiary-level revenue allocation. The system needs to generate a single consolidated invoice at the parent level while allocating revenue down to each subsidiary independently.
- Independent RevRec schedules per entity. Each subsidiary needs its own recognition schedule running on its own timeline, with its own performance obligations and allocated transaction price.
- Modification handling at the subsidiary level. When a subsidiary is added, upgraded, or terminated, the system needs to trigger a reassessment at that entity's level without disrupting the parent invoice or other subsidiaries' schedules.
- Multi-currency support across entities. Different subsidiaries often operate in different currencies. Your billing system needs to handle conversion at the entity level while keeping the parent invoice in a single billing currency.
- A complete audit trail per entity. Every allocation decision and recognition entry needs to be traceable at the subsidiary level. Parent-level records alone are not sufficient for audit purposes.
When your billing platform can't do this, your finance team builds the missing layer manually. And at enterprise scale, that manual layer usually breaks right around the time your audit starts.
How Zenskar handles parent-child structures natively
Most billing platforms force a choice: either invoice the parent and lose subsidiary-level RevRec visibility, or manage each subsidiary as a separate contract and lose the consolidated billing layer. Zenskar is built so you don't have to choose.
Zenskar's billing engine supports parent-child account hierarchies with independent RevRec treatment per entity. The parent gets one consolidated invoice. Each subsidiary gets its own revenue recognition schedule, running independently, connected directly to Zenskar's RevRec engine.
Here's what that looks like in practice:
Billing layer. The parent entity receives a single consolidated invoice covering all subsidiaries. Payment terms, collections, and invoice routing all happen at the parent level.
RevRec layer. Each subsidiary carries its own performance obligations, allocated transaction price, and recognition schedule. When a subsidiary is added or modified, Zenskar triggers a reassessment at that entity's level without touching the parent invoice or other subsidiaries.
Audit trail. Every allocation decision, recognition entry, and modification event is logged at the subsidiary level, traceable back to the originating contract clause.
In a recent webinar where we hosted Jill Hauck, she framed it plainly: "Billing entity and revenue entity are not the same thing. When your billing tool doesn't understand that, your RevRec becomes a monthly manual project."
Zenskar understands that distinction natively. See how it handles a real parent-child contract structure in the interactive demo below.
We launched our product 4 months faster by switching to Zenskar instead of building an in-house billing and RevRec system.

Frequently asked questions
A structure where a parent entity is invoiced on behalf of subsidiaries that actually consume the product. The invoice goes to the top, but revenue belongs to the entities receiving the service.
The billing entity pays. The revenue entity receives the service. Under ASC 606, revenue is recognized at the revenue entity level, not where the invoice goes.
Most cannot. A platform built for hierarchical billing handles invoice routing at the parent level and independent RevRec schedules at the subsidiary level natively





