Magento: Quick way to create order invoice programmatically

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.