Skip to content

Invoices

What This Is

Invoices are the billing documents your team or your customers download when an order, fulfillment, refund, or return needs a formal billing record.

In the shared package, invoices are generated by the framework rather than created manually.

When You Would Use It

Use Invoices when you need to:

  • download an invoice for a fulfilled shipment
  • send an invoice by email
  • confirm whether an invoice already exists for an order event
  • retrieve a billing document for accounting or customer service

Before You Start

Before you try to retrieve an invoice, make sure:

  • the order or fulfillment has already reached an invoice-producing state
  • you know whether you are working in My Account, an admin order flow, or a fulfillment flow
  • you understand that some invoice types, such as refund or return invoices, are more internal than shopper-facing

The strongest shopper-facing invoice surface in the shared package is My Account order history. The strongest operator-facing invoice surfaces are adjacent order and fulfillment actions plus the admin invoice API.

How To Use It In The Product

Storefront

  1. Go to My Account > Orders.
  2. Find the order you want.
  3. Click Download invoice when the button is available.
  4. If needed, open the order detail to cross-check the fulfillment and delivery context.

Admin

  1. Open the order or fulfillment you are working on.
  2. Use the invoice download or invoice email action exposed by your project.
  3. If you need invoice detail records, use the invoice list or invoice-detail API your project exposes from the shared package.

What It Changes In The Storefront

Invoices are mostly a visibility and retrieval feature.

They do not usually change storefront behavior directly, but they do change what customers and operators can access for:

  • billing follow-up
  • accounting review
  • fulfillment confirmation
  • refund or return documentation

Common Tasks

Download a fulfillment invoice

Use the shopper order-history invoice button or the admin fulfillment invoice download action.

Send an invoice by email

Use the fulfillment invoice email workflow or your project’s consolidated invoice workflow when those are enabled.

Retrieve a refund or return invoice

Expect this to be more internal and accounting-oriented than the standard shopper invoice download flow.

Rules, Limits, And Things To Watch

  • Invoice creation is generated by the framework, not manually authored in the shared package.
  • Shopper invoice download is tied most clearly to fulfillments that already have invoices.
  • Consolidated invoice PDFs are related, but they are not the same thing as a single Invoice record.
  • Some order-level email names in the shared package refer to quote or payment-link delivery rather than actual invoice-record delivery.
  • A return or refund can produce invoice output later than the original order fulfillment.

Troubleshooting

The invoice button is missing

Check whether the fulfillment actually has an invoice yet.

The customer wants one invoice for the whole order

Check whether your project uses the consolidated invoice workflow instead of only fulfillment-level downloads.

The refund exists but there is no shopper invoice

Refund and return invoices are more internal in the shared package and may not surface in My Account.

  • Payments
  • Payment Methods
  • Orders

Sources

  • packages/framework/src/Http/Controllers/Api/Storefront/OrdersController.php
  • packages/framework/src/Http/Controllers/Api/Admin/InvoicesController.php
  • packages/framework/src/Http/Controllers/Api/Admin/FulfillmentsController.php
  • packages/framework/src/Actions/Invoice/GenerateInvoices.php
  • packages/storefront/resources/views/components/my-account/orders/data-table/row/header.blade.php