Here is a quick and easy way to create order invoice programmatically.
Suppose, $_order contains your order.
Here goes the code to create invoice:-
if($_order->canInvoice()) {
/**
* Create invoice
* The invoice will be in 'Pending' state
*/
$invoiceId = Mage::getModel('sales/order_invoice_api')
->create($_order->getIncrementId(), array());
$invoice = Mage::getModel('sales/order_invoice')
->loadByIncrementId($invoiceId);
/**
* Pay invoice
* i.e. the invoice state is now changed to 'Paid'
*/
$invoice->capture()->save();
}
That’s all. Your invoice for the order is created.
Hope this helps. Thanks.