Delegated billing: child invoice remains open after parent payment – supported reconciliation approach?

8 views
Skip to first unread message

Harish K

unread,
Dec 21, 2025, 7:28:07 PM12/21/25
to killbill...@googlegroups.com, karan bansal

Hi ,

We are running into a delegated billing issue and would appreciate guidance on the supported approach.

Setup

  • Parent–child account hierarchy

  • Child subscription renewal generates a child invoice (₹1,899)

  • Parent receives a summary invoice and pays successfully (externalPayment=true)

  • Payment shows SUCCESS for the parent invoice

Problem

After the parent payment succeeds:

  • The child invoice remains OPEN with a balance

  • The child account balance is non-zero

  • Kill Bill repeatedly attempts to pay the child invoice, resulting in ABORTED payments

  • Credits (CBA / CREDIT_ADJ) do not close the child invoice

From what we understand, this is expected because:

  • Parent payments do not automatically reconcile child invoices

  • Invoices are closed only by payments or ITEM_ADJ linked to invoice items

Constraints

  • Our current Java client version does not expose ITEM_ADJ APIs

  • CREDIT_ADJ / account credits do not settle invoices

  • We want to avoid directly charging the child (delegation rules)

Question

What is the recommended / supported way to close a child invoice in delegated billing when:

  • The parent has already paid successfully

  • No additional money should be charged

  • The child invoice must transition to PAID

Specifically:

  • Is issuing a $0 external payment on the child invoice the correct approach?

  • Or is there a preferred REST API for creating ITEM_ADJ that we should be using instead?

Any guidance on the correct pattern would be very helpful.

*********** 210. row ***************************
               record_id: 210
                      id: 195520e3-5cbd-4ee5-b1ea-76ca54f5a793
              account_id: 73470a6b-d170-42ab-b272-90a85153e258
       payment_method_id: NULL
    payment_external_key: 3ab8faed-94dc-4932-ba2c-8e50bb4821a8
          transaction_id: NULL
transaction_external_key: cbc61144-2db5-43c3-b947-937a3ae78296
        transaction_type: PURCHASE
              state_name: ABORTED
                  amount: NULL
                currency: INR
             plugin_name: __INVOICE_PAYMENT_CONTROL_PLUGIN__
       plugin_properties: ZV  <[{"IPCD_INVOICE_ID":"c27397c3-2dae-4f15-8bc6-64a199c58759"}]
              created_by: PaymentRequestProcessor
            created_date: 2025-12-20 21:53:31
              updated_by: PaymentRequestProcessor
            updated_date: 2025-12-20 21:53:31
       account_record_id: 112
        tenant_record_id: 1
*************************** 211. row ***************************
               record_id: 211
                      id: 202b9074-51d2-4e66-91b0-2c088fc139b4
              account_id: dcd871e9-be19-465c-bba0-492f3c90f4c5
       payment_method_id: 829f18bd-19cd-4802-8549-3402015dd6b1
    payment_external_key: 697af8b0-6341-43cd-a9b5-1698d52d6005
          transaction_id: 68889f5a-60e1-4bec-bbce-e7ab7b412da5
transaction_external_key: 68889f5a-60e1-4bec-bbce-e7ab7b412da5
        transaction_type: PURCHASE
              state_name: SUCCESS
                  amount: 3898.000000000
                currency: INR
             plugin_name: __INVOICE_PAYMENT_CONTROL_PLUGIN__
       plugin_properties: ZV  <[{"IPCD_INVOICE_ID":"51a4db5f-79c1-4dd0-8f5d-d99f41fb8488"}]
              created_by: PaymentRequestProcessor
            created_date: 2025-12-20 21:53:32
              updated_by: PaymentRequestProcessor
            updated_date: 2025-12-20 21:53:32
       account_record_id: 111
        tenant_record_id: 1
211 rows in set (0.884 sec)

Thanks in advance,
Harish

karan bansal

unread,
Dec 22, 2025, 9:22:49 PM12/22/25
to Kill Bill users mailing-list
Hi Harish,

Since the payment is delegated to the parent, the payment attempt is always made for the parent invoice, however, the child invoice balance should be updated after the successful payment is made for the parent invoice. There should not be any requirement for separate payment to address the child invoice or to change its state.

Please refer to the attached screenshots where the child invoice balance went to 0 after parent invoice payment. 

Regards
Karan

Child Invoice 0 balance.PNG
Child Invoice Showing balance.PNG
Child account payments.PNG
Reply all
Reply to author
Forward
0 new messages