Invoices
How it works
Order placed
Order is Processing
Invoice generated
Customer downloads it
Each invoice shows:
- Your store name, address, website and phone number, with the order number and invoice date
- The Bill to and Ship to addresses
- The items (SKU, quantity, unit price and total), subtotal, shipping, tax, total and a tax summary
- Any Content Zones you've filled in, at the bottom
Instead of SparkLayer Invoices, you can attach invoices made in another system, send invoices from your store, or use an app such as Sufio. See Choose how to send invoices.
Shopify only
To compare the ways of invoicing step by step, see the interactive guide How payments work.
Turn on invoices
- Go to Settings,Configurations,Quotes and invoices (opens in your SparkLayer Dashboard in a new tab).
- Turn on Invoices ("Send invoices to your B2B customers directly from SparkLayer").
- Click Save.
Invoice Settings then appears beside Invoices, so you can add your own content. Content changes apply to all invoices, the next time each is viewed.
Invoices are created for orders placed from now on. Orders placed before you turned on Invoices don't get one.
Below Growth, you see a Growth badge and an Unlock button instead of the switch. Unlock shows what Growth adds and starts a free 14-day trial.
Add payment details and other text with Content Zones
Content Zones are 3 optional blocks of text at the bottom of every invoice. Use them for payment terms, bank details, tax details, terms and conditions or legal statements.
- Go to Settings,Configurations,Quotes and invoices (opens in your SparkLayer Dashboard in a new tab) and make sure Invoices is on.
- Next to Invoice Settings, click Edit. The Edit Invoice Settings panel opens.
- For each zone you want, enter a Title (up to 50 characters, shown as a bold heading) and Content (up to 2,000 characters, shown smaller below it). Line breaks are kept.
- Save your changes.
Every zone, title and content box is optional. For example, a zone titled "Making payment" could list the account number, sort code, IBAN, BIC and bank name to pay into.
Add checkout field data to an invoice
To show details collected at checkout, such as a delivery date from a custom checkout field, paste one of these snippets into a Content Zone's Content box.
No coding is needed. You can change plain words such as Tax ID:, but leave everything inside {% %} and {{ }} as it is. Where a snippet names a checkout field (such as "tax-id"), it must match the field's name.
You need the Additional Information field turned on at checkout first.
{% if purchase.customer_reference %}
Customer Reference: {{ purchase.customer_reference }}
{% endif %}Shows a message based on the payment method used for the order.
{% if purchase.payment_method == "upfrontPayment" %}
A message for Pay Online by Card
{% elsif purchase.payment_method == "paymentOnAccount" %}
A message for Payment On Account
{% elsif purchase.payment_method == "paymentByInvoice" %}
A message for Pay By Invoice
{% elsif purchase.payment_method == "quote" %}
A message for Quote
{% else %}
{{ purchase.payment_method }}
{% endif %}You need net terms set on the customer's metafield first, so invoices get a due date.
{% if data.purchase.dates.payment_due_at %}
<p>
Due Date: {{ data.purchase.dates.payment_due_at | ldate }}
</p>
{% endif %}You need a custom "Shipping date" checkout field first. The field.name must match the name of your checkout field.
{% for field in purchase.custom_fields %}
{% if field.name == "delivery-date" %}
Shipping Delivery Date: {{ field.value }}
{% endif %}
{% endfor %}You need a custom "Order Notes" checkout field first. The field.name must match the name of your checkout field.
{% for field in purchase.custom_fields %}
{% if field.name == "order-notes" %}
Order Notes: {{ field.value }}
{% endif %}
{% endfor %}You need a custom "Tax ID" checkout field first. The field.name must match the name of your checkout field.
{% for field in purchase.custom_fields %}
{% if field.name == "tax-id" %}
Tax ID: {{ field.value }}
{% endif %}
{% endfor %}You need the Accounting ID metafield on your store first (see below). It's the only metafield an invoice can show.
| Item | Details |
|---|---|
| Custom data type | Customers (opens in a new tab) |
| Metafield type | single line text |
| Namespace | sparklayer |
| Key | accounting_id |
| Use | A unique accounting ID for the customer, for example the account ID in your ERP or accounts package. When it's set, it's also added to the order's metadata in your eCommerce platform. |
{% if purchase.customers.sparklayer.accounting_id %}
<p>{{ purchase.customers.sparklayer.accounting_id }}</p>
{% endif %}Update your company details
Invoices show your company name, address, phone number and website at the top. SparkLayer syncs these from your store, and what you enter here overrides what B2B customers see.
- Go to Settings,Configurations,Store (opens in your SparkLayer Dashboard in a new tab).
- Next to Store details, click Edit.
- Update the Store name, Store address, Phone number, Email and Website URL.
- Click Save.
See Settings.
Change the invoice design with theming
Theming gives full control of the invoice's layout, fonts, colours and content. Templates use a template language, so we recommend working with a web developer. Invoice templates need the Growth plan or above.
Go to Settings,Templates (opens in your SparkLayer Dashboard in a new tab) and click Create template. This creates a template theme for your invoices, email notifications and translations. See Settings and the templates developer docs.
Example changes:
In the <thead>, add a new <th> at the start:
<thead>
<tr>
<th style="width: 10%"></th>
<th style="width: 60%">{{ "pdf.quote.section.line_items.table.headings.item" | t }}</th>
<th style="width: 10%">{{ "pdf.quote.section.line_items.table.headings.quantity" | t }}</th>
<th style="width: 15%" class="text-right">{{ "pdf.quote.section.line_items.table.headings.unit_price" | t }}</th>
<th style="width: 15%" class="text-right">{{ "pdf.quote.section.line_items.table.headings.total" | t }}</th>
</tr>
</thead>In the <tbody>, add a new <td> at the start:
<td>
<img src="{{ line.image_url }}&height=160" height="80">
</td>At the start of the template file, find this code:
{% if data.merchant.store_name %}
<h1>{{ data.merchant.store_name }}</h1>
{% endif %}Host your logo image somewhere, then replace the code with:
{% if data.merchant.store_name %}
<img src="path-to-your-hosted-image-file" style="width: 200px; height: auto">
{% endif %}Test your invoices
There's no invoice preview, but changes show the next time an invoice is viewed. To check them:
- Place a test order. Sign in to your store as a B2B customer or sales agent and place an order. It must reach Processing, so it can't be a draft order.
- Open the order in My Account.
- Click View & Download Invoice. The invoice opens in your browser, where you can download it.
- Make changes to your Content Zones, company details or theme, then view the invoice again.
Reference
When invoices are available
| Situation | What happens |
|---|---|
| Order is Processing | An invoice is created. |
| Order placed before you turned on Invoices (old, past or historic orders) | No invoice. Invoices are only created for new orders, not for previous orders. |
| Draft order, or an order awaiting approval | No invoice until the order is completed. This includes orders from company users that need approval. |
| Refunded or cancelled order | No invoice. |
| Split shipment (part of the order fulfilled first) | The invoice shows all products on the order. |
| Editing a completed order (Processing but not yet fulfilled) | Your changes don't appear on the invoice. |
| Editing a draft order | Your changes appear once the order is completed (set to Processing). |
Limitations
| Item | Limitation |
|---|---|
| Line-item tax | Invoices can't show a tax breakdown for each line. |
| Refunds, returns, cancellations | Invoices can't show these order statuses. |
| Languages | English, French and Spanish. Invoices are always in your store's default language, even if your store has several. For another language, contact our support team. |
| Part fulfilment | Part-fulfilled orders aren't supported. The invoice shows all products on the order, whether they've been fulfilled or not. |
| Customers | Only signed-in B2B customers set up in SparkLayer can get invoices. |
Compliance
Every country has its own invoicing rules, from required fields to tax details and legal statements. Add the payment terms, bank details or legal wording you need with Content Zones.
Check your invoices meet local rules
SparkLayer isn't an accounting or legal service provider, and isn't liable for your invoices meeting local regulations. Ask a professional to check them.
FAQs
Growth, Pro or Enterprise. Net terms and credit limits, without SparkLayer Invoices, are on every plan. Change plan at Plan card, or click Unlock next to Invoices to start a free trial. See SparkLayer plans and pricing (opens in a new tab).
Place a test order and download its invoice from My Account. See Test your invoices.
Each invoice uses the order's currency, which is based on the customer's location or your store's settings.
Tax is calculated from the settings in your store. See Tax and shipping.
- The order is Processing. Invoices aren't available before then.
- The order was placed after you turned on Invoices. Older orders don't have an invoice.
- Your browser allows PDFs to download. Check its settings.
If it still doesn't work, contact our support team.
No. SparkLayer only creates invoices for new orders, once Invoices is on. It doesn't create them for previous or historic orders, including imported order history.
Not once the order is completed (Processing). Changes to a draft order appear once it's completed.
Yes, for example a tax ID number. See Add checkout field data to an invoice.
Add them as free text in a Content Zone, for example a "Making payment" zone with your bank details. To show a due date based on the customer's net terms, see Show the invoice due date.
For Sufio, in the SparkLayer Dashboard, go to Integrations,Partners (opens in your SparkLayer Dashboard in a new tab) and turn off Sufio under Invoicing. The Shopify app has no switch: Sufio's Setup guide explains how to disconnect it. For any other invoicing app, uninstall it from your store as usual.
Use theming at Settings,Templates (opens in your SparkLayer Dashboard in a new tab), with a web developer. Our support team can help.
Yes. See Attach your own invoice to an order.
They sign in, open the order and download the PDF to share, for example by email.
No. Invoices are only for signed-in B2B customers set up in SparkLayer.
We'd love to hear your feedback on invoices. Email our product team at product@sparklayer.io.
Last updated