OK I again gone through your requirements. If you don't need billing plans, then why don't you use payment terms to collect the down payment? For example, you can create a payment term as Z020, and in configuration make 20% -0days rest in 30 days. When this payment term is added in the sales order, using user exit, apply billing block. Then print the order confirmation and send to customer for down payment collection. Once the payment is received, accounting can post the amount against the sales order reference. Then process further as normal sales order. When printing invoice, the program can check for down payment and print remaining value.
Regards,