Invoices
Listen for the OrderInvoiceAvailable event (in the Laravel\Cashier\Events namespace).
When a new order has been processed, you can grab the invoice by:
$invoice = $event->order->invoice();$invoice->view(); // get a Blade view$invoice->pdf(); // get a pdf of the Blade view$invoice->download(); // get a download response for the pdfTo list invoices, access the user’s orders using: $user->orders->invoices().
This includes invoices for all orders, even unprocessed or failed orders.
For example:
// Your blade view file<ul class="list-unstyled"> @foreach(auth()->user()->orders as $order) <li>
<a href="/download-invoice/{{ $order->id }}"> {{ $order->invoice()->id() }} - {{ $order->invoice()->date() }} </a> </li> @endforeach</ul>
// routes/web.phpRoute::middleware('auth')->get('/download-invoice/{orderId}', function($orderId){
return (request()->user()->downloadInvoice($orderId));});Finding a specific invoice
Section titled “Finding a specific invoice”Find invoice by order id
Section titled “Find invoice by order id”It’s possible to find a specific invoice by its order number.
$order = $user->orders()->first();
$user->findInvoice($order->number);You can also retrieve the invoice using the order id:
$user->findInvoiceByOrderId($order->id);findInvoiceOrFail
Section titled “findInvoiceOrFail”If you wish to show a 404 error page whenever the invoice is not found, you may use the findInvoiceOrFail and
findInvoiceByOrderIdOrFail methods on your billable model.
$order = $user->orders()->first();
$user->findInvoiceOrFail($order->number);$user->findInvoiceByOrderIdOrFail($order->id);If the invoice cannot be found, a \Symfony\Component\HttpKernel\Exception\NotFoundHttpException will be thrown.
If the invoice doesn’t belong to the user, it will throw a \Symfony\Component\HttpKernel\Exception\AccessDeniedHttpException.
In a standard Laravel application those exceptions will be turned in a proper 404 or respectively 403 HTTP response.