In this post I am going to explain how to get invoice details by invoice id in Magento 2.

Using below code snippet you can get invoice details by passing invoice id.

1. Using Dependency Injection

Add below code snippet in Block class.

protected $_invoiceRepositoryInterface;

protected $_logger;
    
public function __construct(
    \Magento\Framework\View\Element\Template\Context $context,
    \Magento\Sales\Api\InvoiceRepositoryInterface $invoiceRepositoryInterface,
    \Psr\Log\LoggerInterface $logger,
    array $data = []
) {
    $this->_invoiceRepositoryInterface = $invoiceRepositoryInterface;
    $this->_logger = $logger;
    parent::__construct($context, $data);
}

public function getInvoiceDetails($invoiceId)
{
    $invoiceData = array();

    if($invoiceId > 0) {
        try {
            $invoiceData = $this->_invoiceRepositoryInterface->get($invoiceId);
        } catch (Exception $exception)  {
            $this->logger->critical($exception->getMessage());
            $invoiceData = null;
        }
    }

    return $invoiceData;
}

 

Add below code snippet in template file.

// Invoice Id
$invoiceId = 1;

$invoiceData = $block->getInvoiceDetails($invoiceId);

echo "<pre>";
print_r($invoiceData->getData());
echo "</pre>";

 

2. Using Object Manager

$objectManager = \Magento\Framework\App\ObjectManager::getInstance();

// Invoice Id
$invoiceId = 1;

$invoiceRepositoryInterface = $objectManager->get('Magento\Sales\Api\InvoiceRepositoryInterface');
$logger = $objectManager->get('Psr\Log\LoggerInterface');

try {
    $invoiceData = $invoiceRepositoryInterface->get($invoiceId);
} catch (Exception $exception)  {
    $logger->critical($exception->getMessage());
    $invoiceData = null;
}

echo "<pre>";
print_r($invoiceData->getData());
echo "</pre>";