Skip to content

Invoice Management

This guide covers generating, reviewing, and managing invoices for participants.

Billing Work by Period (Overview)

The manager Overview groups billing work into one card per period, oldest open period first. Each card shows the period status, the server-selected next action, overdue invoices and failed deliveries, and any additional warnings. Open Period details to see the remaining workflow steps and the compact Checked and complete checklist. Steps that open an actionable page link to it; a step that merely waits on an upstream one has no link. Data problems never block generation — they appear as warnings. When locked invoices from an earlier interval overlap the period (for example, paid monthly invoices under a new quarterly rhythm), the card shows a generation conflict with a link to the blocking invoices instead of offering generation.

Period resolution and step completion are separate: a period counts as open when it holds a draft or approved invoice, or a billable participant (active with a meter assignment) with no invoice — a partial batch generation therefore keeps the period open even after those invoices are sent. The later steps are trailing states, not gates: approve/send/pay track the period's active invoices, so an older period can be fully sent yet still show an unpaid payments step or an unresolved failed delivery. Cancelled invoices are withdrawn and count neither for nor against any step — but one still counts as an existing invoice, so it suppresses the missing-invoice prompt for its participant until the operator regenerates it.

A community created mid-period has no partial first period: billing periods align to the calendar, so the first billable one starts at the next aligned boundary after the community's start date.

Three "nothing to do right now" states look similar but behave differently:

  • First run — a brand-new ZEV with no participants or no metering points yet shows a setup checklist.
  • Awaiting first period — participants and meters exist, but the first billing period has not ended yet. Missing meter assignments, a blank IBAN and a missing issuer (or an issuer without a full address) still show as warnings above the waiting message.
  • Caught up — no ended period needs you right now (nothing waiting at draft/approved, every eligible participant invoiced); Overview shows a quiet No billing work needs attention message and keeps completed periods collapsed below it.

An unfinished setup never hides behind a green status: with active participants but no current meter assignment Overview says nothing is billable yet and links to meter assignment. A missing IBAN, and a missing issuer or an issuer without a full address, stay visible beside normal period work without blocking generation: either way invoices are created without a QR bill. The issuer warning links to ZEV settings → People & access.

Invoice alerts appear in the matching period card: unresolved failed invoice emails (a later successful retry clears the item) and overdue sent invoices. Alerts without a billing period, including participant validity endings that still hold meter assignments, appear under Community notices. Tariff coverage, metering gaps, unassigned readings and setup state are already covered by readiness steps or setup guidance.

Charges section and step

Below the invoice table, the Charges section lists the period's one-off charges and, until an invoice of the period is approved, offers Add charge. With at least two charges, click a column header to sort. Paid by groups all-participant charges first, then orders selected bearers alphabetically by name in the current language. Missing participant names use their IDs.

When the community has one-off charges in a period, the period card gains a Charges step between generating and approving. It asks you to regenerate draft invoices that were created before a charge was added or changed, and warns about a charge nobody can be billed for (no member on its date). It stays out of the list for periods without charges.

Participant View: My Documents

My documents (/me/documents) is where a participant finds everything the community has delivered to them, invoices included, newest first, in the same table as the other lists: sent invoices, credit notes, annual statements, financial summaries, tariff overviews, the participation contract, and notices from the operator. Each row shows the type, the year, the delivery date and a Download button; use the type filter to narrow the list (Invoice gives the invoices alone), the year filter when documents span several years, and the community filter when you take part in more than one. On a phone each document is a small card.

An invoice row shows its total and, where a credit note was set against it, the amount due beneath it, and whether payment is due, overdue or paid. A credit note row shows its amount, what is left of it, and where it was set against an invoice. These figures are read from the invoice or credit note, so they stay current; the PDF is the copy that was sent and does not change. An invoice appears once it has been sent (drafts and approved invoices that haven't gone out yet stay with the operator), a credit note once its PDF exists. There is no separate page for one invoice: the PDF carries the details, and an old link to an invoice or to the former My invoices page takes a participant here.

Participant My documents

  • A document is a copy of what was delivered. Opening an invoice here shows the document you were sent, even if the invoice PDF was regenerated later.
  • Documents do not expire and are not removed when you leave a community: a former participant can still open what was delivered to them.
  • A document delivered before your account was linked appears as soon as it is linked.
  • A document that was replaced by a newer one (an annual statement issued again) stays listed, marked Superseded. A sent invoice that was cancelled stays listed, marked Cancelled. A notice the operator withdrew disappears from your list.

Invoice Lifecycle

Invoices progress through a controlled workflow:

Draft → Approved → Sent → Paid
  • Draft — just generated; can be reviewed, approved, regenerated or deleted.
  • Approved — locked; can be emailed or marked as sent. Its amounts can no longer change.
  • Sent — emailed (or marked as sent); can be resent, receive payments and be marked paid. A sent invoice that has received part of its total shows Partly paid.
  • Paid — the payments cover the total; only its PDF can still be regenerated.
  • Cancelled — removed from the active workflow. A cancelled invoice does not count as generated for its period: its period card still asks you to generate a replacement. Cancelling is available through the API only — there is no cancel button in the UI, and an invoice with payments cannot be cancelled.

Once an invoice has been approved it keeps its number for good: if it is cancelled later, generating the period again creates a new invoice next to it instead of replacing it, so no invoice number ever goes missing. Only a draft, or a cancelled invoice that was never approved, is replaced or can be deleted by a manager. Admins can delete other invoices too, except one that has received payments.

Approval freezes the issuer and recipient details and discards the draft PDF. Use Generate PDF to view the approved document. Emailing generates a missing PDF automatically. Mark sent records manual delivery without generating a PDF; you can generate it afterwards. Later address or bank-detail changes do not change the approved document.

Billing Hub (Invoices · Emails)

The sidebar entry Billing (/billing/invoices) opens the invoice-first billing hub. Its tabs are routes — each is directly linkable:

  • Invoices (/billing/invoices) — the period-based invoice view (below).
  • Emails (/billing/emails) — delivery status of approved, sent, and paid invoices: the latest email status per invoice, a filter by status, a failed-email banner, View history for the actual attempt log, and an inline Retry per failed latest attempt.

What the community has delivered to its participants has its own sidebar entry, Documents (see Delivered documents).

The yearly whole-ZEV annual-statement ZIP is on Reports (see Reports: Annual Report, Statements and Tax Overviews). The former /billing/statements address redirects there.

The per-period work cards live on Overview. The running period is separated as Current billing period, with a note that it is still open, and never exposes readiness actions. Ended periods with open work remain visible as cards; fully completed ended periods are collapsed. The primary action follows the backend-selected next step. Open invoices deep-links into Billing with that exact period preselected (/billing/invoices?period_start=…&period_end=…). Periods from an earlier billing interval keep their exact entries after a switch, so a January monthly invoice stays reachable next to its Jan–Mar quarter.

The former /billing/periods bookmark redirects to Overview (see the Manager Overview screenshot in Getting Started).

The card action opens the workflow that needs attention, such as metering quality or tariffs. Open invoices opens that period's invoices.

Email delivery and retries

After a retry is accepted, the tab shows it as pending while the worker starts. It updates automatically when the next delivery attempt is recorded. Invoice rows themselves show only the latest delivery state (the Sent step of their progress); detailed attempts and errors are kept in the Emails tab's history panel.

Delivered documents

The Documents page (/documents, in the sidebar right after Billing) answers "did Anna get her statement?". It lists every document delivered to the selected community's participants — with the participant, the type, the delivery date, who delivered it, and a No account yet badge for a participant who has no linked account (they will see the document once an account is linked). Filter by participant, type and year; Download opens the exact delivered file.

Delivered documents

Invoices arrive here by themselves when they are sent, by email or by Mark as sent. Everything else you deliver on purpose:

  • Upload document — a PDF (up to 10 MB) with a title, for everyone in the community or for chosen participants. Only people who are participants now receive it; someone who joins later gets nothing. The result says how many received it and how many of them have no account yet.
  • Issue documents — the annual statement for a year (one per participant who was sent an invoice that year), the financial summary (one per producer), or the tariff overview (the tariffs valid today, for every current participant). Issuing again replaces the earlier document in the participant's list; the earlier one stays visible to them as superseded. Statements and summaries are rendered when you issue them, so issue them once the year's invoices are final.

Participants with an account always get a notification in the app. Both dialogs also offer Also notify participants by email, off by default: it sends a short email with a link to My documents and no attachment, and the result says how many emails were queued and how many participants were skipped because they have no email address. The text of that email is edited by admins under Platform → Templates → Email templates.

  • Withdraw — takes an uploaded notice back from participants (for example sent to the wrong person). The record and the file are kept and the row stays here, marked as withdrawn. Invoices, statements and the other issued documents are corrected by issuing again, never withdrawn.
  • Deliver contract to inbox — in the action menu of a participant on the Participants page. It delivers the participant's latest issued contract; it is never automatic, because the contract is also issued whenever you download it to preview or print it. If no contract has been issued yet, download it first.

Viewers can read this tab but not upload, issue, withdraw or deliver.

Period-Based Invoice View

The Invoices tab shows one billing period at a time. You move between periods, and within a period you can narrow the list to one workflow stage or to the rows that need attention.

Period Navigation

The command bar at the top of the tab shows:

  • The period name — September 2026 for a monthly period, July – September 2026 for a quarter. Hover it to see the exact dates; click it to pick one of the recent periods, each listed with its dates.
  • ‹ and › buttons on either side to step to the previous and next period.
  • On the right, the period's batch actions (see Row and Batch Actions).

A range that is not one whole billing period of the community (for example from an old bookmark, or an invoice's month after the community switched to quarterly billing) shows its dates with a warning badge, Not a billing period, and a notice above the table. Its invoices can still be approved, sent and paid, and their PDFs regenerated, but this page creates no invoices for such a range: the notice's button (for example Show July – September 2026) opens the whole billing period around it, and ‹ / › step to the nearest whole periods.

The period is automatically set based on the selected ZEV's billing interval.

How the period is chosen and kept consistent:

  • Default: the most recent completed billing period (nothing older is silently implied — you can move further back with Prev).
  • New community: with no completed period yet, the page opens on the community's first aligned period instead of an empty one.
  • Deep links: opening a link that carries a period (?period_start=…& period_end=… — from an Overview period card, an attention item, or your own bookmark) shows that exact period, including historical periods from an earlier billing interval after a switch. Ranges that would start before the community existed are ignored: the page opens the default period and puts it in the address bar.
  • Boundary: Prev stops at the community's earliest billable period; the preset menu offers nothing older. After switching billing intervals, already settled periods (fully paid under the previous interval) stay closed and link to the invoice that already settles them instead of offering Generate, while partly overlapping locked invoices surface as a generation conflict with a link to the blocking invoices.

Choosing a period preserves unrelated URL parameters and clears the row filter. Reload and browser Back read the period from that URL. Switching community keeps the period you were looking at where it can: when the other community bills in a different interval, you land on its billing period that contains the end of the previous one (September in a monthly community becomes July – September in a quarterly one, and back), and a period before the community's start falls back to the default. A failed refresh retains the loaded period rows with Retry.

Invoice period overview

Period Overview Table

Each row in the table represents one participant who had active metering-point assignments during the period. A participant whose assignment has since ended keeps their row while they still hold an invoice for the period, so email/payment actions on that invoice stay reachable. Columns:

Column Description
Participant Current participant name, invoice link and relevant participation dates. Meter locations distinguish several participations held by the same party. Problems appear below the name.
Progress Metering data → Invoice → Approved → Sent → Paid. Checks show completed steps, spinners show pending work, and warning marks show problems. The legend below the table sheet explains the icons.
Amount (CHF) The invoice amount; - without a live invoice.
Actions The next step and More. Viewers and managers of disabled communities retain Review conflict and Open PDF.
  • Organisations have a building icon; a household's second name line follows the name. Names come from the current participant data; the invoice PDF keeps the recipient as billed. Joined/Left dates explain participation inside the period.
  • The invoice number opens details and retains the period for return navigation. Rows without an invoice show Not created or Creating invoice…; cancelled invoices retain their link and show no billed amount. When an invoice was cancelled and the period generated again, the row shows the new invoice and Replaces OZV-00014 (Cancelled) beneath it, linking to the cancelled one.
  • Problems name missing meters and days, an overlapping locked invoice, a failed PDF, a failed email, or an approved invoice whose participant has no email address (deliver it yourself, then Mark as Sent). A settled invoice whose meters were removed shows no missing-data warning.
  • Already billed means one or more sent/paid invoices cover the period, for example monthly invoices collectively covering a quarter. No new invoice is needed. The link opens one related invoice.

On narrow screens each row becomes a card: name and amount (with CHF) first, then the progress and the actions.

Empty State

If no participants with active assignments exist for the period, the page shows links to:

  • Participants — to add or check participant records.
  • Metering Points — to check metering-point assignments.
  • Tariffs — to configure pricing.

Row and Batch Actions

Each row shows its next step as an outlined button — Generate invoice, Approve, Send Email or Mark Paid, depending on the status — and puts the rest under More:

Status Button Under More
(none) / Cancelled Generate invoice / Generate again Delete invoice (cancelled), Open PDF, Generate/Regenerate PDF
Draft Approve Regenerate invoice, Delete invoice, Open PDF, Generate/Regenerate PDF
Approved Send Email Mark as Sent, Open PDF, Generate/Regenerate PDF
Sent Mark Paid / Mark rest as paid Record payment, Open PDF, Generate/Regenerate PDF, Resend Email
Paid — Open PDF, Generate/Regenerate PDF

More groups invoice actions first, then PDF and email actions. Open PDF appears once the invoice has a stored document.

Admins also see Delete invoice for approved, sent and paid invoices without payments. A cancelled invoice that had been approved offers no Delete invoice to managers: it stays on record with its number.

The filter above the table counts the period's rows: All, Drafts, Approved, Sent and Issues (rows with missing metering data, a generation conflict, a failed PDF, a failed email or no email address). Select one to show just those rows; select it again, All or Show all rows to clear it. A category with no rows, or with all of them, is left out. If the selected category empties, the page explains why and offers Show all rows. Paid invoices appear under All only. Changing period or community clears the filter.

The batch actions in the command bar always act on the whole period, including rows hidden by a filter. The recommended next step is the page's one filled button and names how many invoices it touches (for example Approve 4 invoices); Download all PDFs sits beside it, and More batch actions holds Generate all, Approve all, Send all and Regenerate all PDFs. Operations with no eligible invoices are omitted from the menu. While a batch request runs, its controls are disabled. Generation remains disabled for queued targets until their invoices arrive. Send all counts only approved invoices with an email address, and stays disabled while any email is being sent or its delivery checked; a row's Send Email is disabled while that invoice's delivery is checked.

Generating Invoices

  1. Navigate to the desired billing period.
  2. Check the Issues filter (shown only while there are issues) — ensure metering data is complete for the participants you want to invoice.
  3. Click Generate invoice on a participant's row, or the recommended batch action (Generate n invoices) in the command bar. Generating all runs in the background: each row shows Creating invoice… until its invoice arrives.

The page watches for queued invoices and their PDFs for up to 90 seconds, including while the worker has not created any invoices yet. If processing takes longer, a warning says it has not finished: reload the page to check the result before generating again. Changing period or community stops watching the previous period.

The system calculates energy allocation and applies tariffs, creating a Draft invoice.

Concurrent generation requests for the same participant run in sequence. The regeneration rules below apply to overlapping billing periods.

Tariff-generation errors stay visible with Check tariffs, which opens the tariff configuration. Processing timeouts offer a status refresh.

Regenerating an Existing Invoice

While an invoice is a Draft, More → Regenerate invoice replaces it with a freshly calculated one. Use this after correcting metering data or tariff configuration. Approved, sent and paid invoices are locked and cannot be regenerated.

Regeneration keeps one-off charges: they are stored separately and added to the new draft again.

Tip: You can generate invoices even when metering data is incomplete, but totals may be inaccurate. It is best to resolve missing data first.

Metering corrections on issued invoices

A committed metering correction (or an import deletion) never rewrites an invoice — amounts, PDFs and delivery records stay as issued. Instead the affected invoices stay in the Issues filter. Their metering step under Progress shows a red exclamation mark. Review corrections under Actions opens the invoice's evidence and available resolution action. Managers and viewers see source evidence (delivery ID or CSV filename, changed intervals) on the detail page. The Overview readiness check gains a Data corrections step linking to the period's billing page.

The arrow-marked Open import protocol link opens the source import's recorded reading changes, with the affected dates as context. It still shows the whole import's retained history. Reviewing it does not clear the invoice's flag.

Invoice status What to do
Draft Regenerate invoice creates a new draft using the corrected values, after confirmation.
Approved / Sent With no payments, Create replacement invoice cancels the original and creates a new draft in one confirmed operation. A sent invoice with payments needs Correct invoice → Reverse the invoice first.
Paid Use Correct invoice → Reverse the invoice, then Create replacement invoice. Payments and partial credits leave the review flag open.

Before Regenerate invoice or Create replacement invoice, the detail page shows the expected total and energy changes using current readings and tariffs, beside the button on wide screens and above it on phones. The current amount, expected amount and signed difference are plain text; an unchanged amount is shown only once. A shift between local and grid energy is shown in one line; other energy changes show old and new quantities. The source import link remains below the action. Loading or failed calculation prevents submission; a failed preview offers Retry, with Check tariffs for tariff errors. This preview changes no invoice or invoice number. Confirmation calculates again, so changes made in the meantime can affect the final result.

A flagged draft's stored PDF is labelled Stored PDF – changes not yet included. An issued invoice's PDF is labelled Issued invoice – original: it remains the document that was issued. Cancelling or failing a recalculation keeps that context visible; the successfully recalculated draft no longer has the pending-changes label.

The issued original stays in the records with its original amount and PDF. For an unpaid replacement, a calculation failure leaves it valid. The replacement opens for review before approval or sending. Its result message compares the old and new amounts as plain text, explicitly notes an unchanged amount, and lists changed energy totals. Viewers and managers of disabled communities can inspect the evidence without write actions.

Full reversal is available for a positive invoice with uncredited payments or applied credit. If neither remains, the flag stays open for review. Zero invoices and payouts cannot be reversed.

Participants see the review flag on their own sent and paid invoices, without internal import evidence or management actions.

Reviewing Invoices

Click the underlined invoice number in the Participant column to view the invoice detail page.

Invoice Detail Page

The detail page also offers the next invoice action: Approve for a draft, then Send email for an approved invoice. Only one workflow step is offered at a time, aligned to the right like the correction action; sent invoices keep Mark Paid in the payments card. While email is queued the send button stays busy; a failed delivery leaves it available again with a visible error. Open corrections take priority over these ordinary actions. Read-only users and managers of disabled communities receive no write actions; opening the PDF remains available.

If a stored PDF cannot be loaded, Retry loads it again without regenerating the invoice. Read-only users receive no instruction to generate a document.

Invoice detail page

The page header names the invoice and, next to the recipient and the billing period, its current status as plain text: draft and Partly paid in dark gold, approved, sent and paid in green, and Cancelled in red error text (a participant sees whether payment is due, overdue or paid instead). The invoice PDF itself no longer prints a status line; only a draft or cancelled document carries a plain Draft or Cancelled marking. Below it, two rows of figure tiles summarise the invoice the way its PDF does:

  • Total CHF (the dark tile) — the final invoiced amount.
  • Subtotal CHF — amount before VAT.
  • VAT CHF — the VAT portion. For a VAT-registered ZEV that pays a producer for their electricity, the VAT is charged on what the ZEV supplies, so it does not equal the subtotal times the rate; the invoice PDF below lists the producer credit after the VAT.

When the ZEV rounds to 5 Rappen (setup), the total tile notes the rounding it contains, for example incl. rounding CHF -0.01.

Payments (managers and viewers) — what has been received for the invoice: the amount received and still outstanding, and one row per payment with its date, amount, note and who recorded it. On a sent invoice, managers see Record payment and Mark Paid here (see Recording payments). Participants see the invoice's status, not the payment rows.

Energy totals:

Metric Description
Local kWh Energy consumed from local (solar) production.
Grid kWh Energy drawn from the external grid.
Feed-in kWh Energy fed back into the grid.

The invoice document — the stored PDF itself is embedded below the figure tiles in a full document viewer (the same file the participant receives by email). It contains the line items, grouped by tariff category (e.g. Energy, Fee), with each line's type, description, quantity (kWh), unit price (CHF), and total, plus a subtotal per group. If no PDF has been generated yet, the page shows a Generate PDF button instead (managers and admins only — a participant sees a plain document-unavailable message, since the API rejects their generation attempt); the viewer appears once the document exists.

Note: Invoices cannot be edited directly. If a correction is needed on a draft, fix the underlying data (metering readings or tariff prices) and regenerate it.

Approving Invoices

Approval locks an invoice and signals that it has been reviewed.

  1. Find the draft invoice in the period overview.
  2. Click Approve on its row (or Approve all for every draft in the period).

The status changes from Draft to Approved. Only draft invoices can be approved.

Generating and Managing PDFs

PDF generation is a separate step from invoice creation.

  • Generate PDF — creates the PDF for an invoice that does not yet have one.
  • Regenerate — replaces an existing PDF (e.g. after the HTML template was updated).
  • Open PDF — opens the generated PDF in a new browser tab.

More → Open PDF opens the document. Generation and regeneration are also under More for any invoice that exists. Download all PDFs in the command bar downloads the period's documents together.

If document details keep changing during rendering, generation can stop with PDF missing. Use Generate PDF again once those changes are finished. Email delivery retries these conflicts automatically; if retries run out, the failure appears in the audit log.

For custom templates that omit the second address line, ask an admin to update the PDF template, then regenerate the affected PDFs.

Only relevant if you turned on Participant QR code on the invoice — see ZEV Setup → Participant Access from the Invoice. It is off by default.

When it is on, every invoice you generate carries a QR code on its insights page that opens that one invoice without an account. The invoice detail page then shows a Participant access link card with:

  • Printed since — when the link was first minted, which is when the invoice first got a PDF.
  • Last opened — the last time somebody scanned it, or Never opened. Recorded at most once per hour, so it answers "has this been read at all?" rather than "how often". This is a useful thing to check before chasing a payment.
  • Revoke link — the only way to stop a printed link.

The link never expires, so revoking is the control. Revoke when an invoice was sent to the wrong address, or a participant tells you their copy went astray.

Revoking is per invoice: it kills the QR on that invoice and touches nothing else, including the participant's other invoices.

What it costs: the code on the copy already in the post stops working for good. The next time you generate that invoice's PDF it gets a fresh code, but a reprint will not match the sheet somebody is already holding. If the participant needs access again, send them the regenerated PDF.

Revoking is recorded in the audit log, as is every first open of a link in a given hour.

Sending Invoices by Email

Once an invoice is approved, you can email it to the participant.

  1. Click Send Email on an approved invoice's row (or Send all).
  2. The system queues the email and watches for the delivery result. Send all checks the period until deliveries succeed or fail, for up to 90 seconds.
  3. While it waits, the button shows Sending… and is disabled.
  4. The row's Sent step updates automatically when the email is delivered or fails; a failure also appears in red under the participant.

For a Sent invoice, More → Resend Email sends another copy.

If you delivered the invoice some other way (printed, handed over), use More → Mark as Sent on the approved invoice instead: it moves to Sent without an email.

Email History

The Sent step shows only the latest delivery status. Every attempt, with recipient, status and error, is in Billing → Emails under View history, where a failed latest attempt also has a Retry button.

Use Tab or Shift+Tab to move between email-history controls, then Escape or Close to return to the history button.

Email sending is asynchronous via Celery with automatic retries. For delivery mechanics, retry behavior, and troubleshooting failed emails, see Email Configuration.

Recording payments

When a participant has paid the whole invoice, click Mark Paid on the row (shown for Sent invoices). It records one payment for the outstanding amount, dated today, and the status changes to Paid. It is a single-click action. Once part of the money has been recorded, the same row action reads Mark rest as paid and books only what is still open.

To record an amount or a payment date, choose Record payment from the row's More menu or from the invoice's Payments card:

  1. Enter the amount (it starts at the outstanding amount and can't exceed it), the date it was paid (not in the future) and, optionally, a note such as the bank reference.
  2. Click Record payment.

In the period table, Record payment and Mark Paid (or Mark rest as paid) stay unavailable while either action is saving, even if you close the payment dialog.

Record payment dialog

A payment short of the total leaves the invoice Partly paid: its status label says so, and the payment step in the period table shows it as under way. Once the payments cover the total, the invoice becomes Paid. Mark rest as paid records whatever is still outstanding in one go.

Payments card of a partly paid invoice

An invoice that pays a producer out (a negative total) has no Record payment: Mark Paid records the payout in full.

To correct a payment entered by mistake, remove it with the bin icon on its row in the Payments card. A paid invoice whose remaining payments no longer cover the total goes back to Sent. Payments of a cancelled invoice can't be removed.

Invoices that were marked paid before payments were recorded have one payment for their total, dated when they were marked paid.

Correcting a paid invoice with a credit note

A paid invoice (or a sent one that has received payments) is not cancelled or deleted; it is corrected with a credit note (Gutschrift). Open the invoice and click Correct invoice in the Credit notes card, then choose:

  • Reverse the invoice - credits everything received for the invoice and cancels it. The cancelled invoice stays, with its number. Afterwards generate the period again to issue a replacement. The two invoices link to each other: the replacement says Replaces … under its title, the cancelled one Replaced by ….
  • Credit part of it - credits an amount you enter (at most what was received and not yet credited) and leaves the invoice as it is. Use it for an overcharge.

Correct invoice dialog

Enter a reason; it is printed on the credit note. Credit notes have their own numbers (prefix CN by default, changeable in the community settings under Billing & payment) and a PDF you can open from the card, based on the Credit Note PDF Template that admins can edit under Templates. Participants find their credit notes in My documents (type Credit note) as soon as the PDF exists, and are notified. That copy is fixed: rendering the credit note's PDF again later does not change what they were given.

Credit note on a reversed invoice

Once a credit note exists, the invoice's payments can no longer be removed and the invoice can no longer be deleted. Invoices with nothing to collect (a producer payout) can't be corrected this way. An adjustment credit also shows as a negative row in the participant's annual statement.

Credit on the next invoice

A credit note is not paid out by default: the next invoice the participant gets deducts it. When an invoice is generated, OpenZEV sets the participant's open credit notes against the total, oldest first, after VAT. The line items, the subtotal, the VAT and the total stay as calculated. The invoice shows the credit note ("Credit note CN-00001 applied") and an Amount due, which is what the QR bill, the email and Record payment use:

Total CHF 108.10
Credit note CN-00001 applied CHF -50.00
Amount due CHF 58.10

If the credit is larger than the invoice, the amount due is CHF 0.00 (the QR bill is left off) and the rest carries over to the next invoice. An invoice the credit covers in full still has to be moved on: click Mark Paid, which records no payment.

  • Drafts hold credit. Credit set against a draft is used up while the draft exists. Regenerating the draft, deleting it or cancelling it gives the credit back, and the replacement invoice uses it again.
  • Cancelling releases credit. Cancelling an invoice, or reversing it, frees the credit it used so the next invoice can use it. The cancelled invoice keeps showing what it said.
  • Reversing an invoice that used credit credits only the cash the participant paid and releases the credit that was applied, so they get back exactly what they paid and used. An invoice settled by credit alone can be reversed too: it is cancelled and its credit released, but no credit note is issued because no cash was paid.
  • Partial credits are limited to cash. An invoice settled by credit alone can't be credited in part. Reverse it and generate it again instead.

Refunding a credit note

When a participant leaves, or simply wants the money, pay out what is left of an open credit note: in the Credit notes card of the invoice it was issued for, click the refund icon on the credit note, enter the date it was paid out and an optional note (for example the bank reference), and confirm. OpenZEV books the whole remaining amount as refunded; the credit note then reads Refunded. The transfer itself happens outside OpenZEV. Credit set against a draft counts as used, so it can be refunded only after that draft is deleted or cancelled. A credit note shows its status (Open, Used or Refunded), what remains, and which invoices it was applied to.

Deleting Invoices

Invoices can be deleted to clean up incorrect or test data.

  1. Open More on the row and click Delete invoice.
  2. Confirm in the deletion dialog.

Delete visibility rules:

  • Draft invoices, and Cancelled invoices that were never approved — More → Delete invoice is available to managers.
  • Any status — admins can delete, as long as the invoice has no payments or credit notes.

Deletion is permanent; the invoice is removed from the database.

Reports: Annual Report, Statements and Tax Overviews

Open Reports (/reports) and select a year at the top of the page. The default is the last completed year.

Admins and managers see the selected ZEV's annual report first:

  • Key figures — the year's self-consumption rate (share of the ZEV's production used inside the ZEV), self-sufficiency rate (share of the ZEV's consumption covered by its own production), total production and consumption, the participants' total savings, and the producers' total uplift over the feed-in tariff. When the previous year has metering data, its rates are shown below this year's for comparison.
  • Over the year — both rates month by month. The previous year is drawn as dashed lines; months without data are left empty.
  • Benefit per participant — each participant's consumption, how much of it came from the ZEV, their self-sufficiency rate, and their savings: what their ZEV electricity was billed at, what the same kWh would have cost at the average grid rate on their invoices, and the difference. These are the same savings figures as on each participant's annual statement. Only invoices that have been approved count — not drafts, and not cancelled invoices — and a participant without invoices for the year shows no savings.
  • Local sales vs. feed-in tariff — for producers: what selling electricity inside the ZEV earned, what the same kWh would have earned as grid feed-in, and the difference (the uplift). The feed-in figure uses the feed-in tariff in force at the time, interval by interval, including a contractual minimum price and fetched prices such as the BFE reference price. A negative uplift means the ZEV price was below the feed-in tariff. A — means the comparison is not available for that producer: an invoice for the year was issued before this figure was stored (regenerate draft invoices to add it), or a period has no feed-in tariff or gaps in its fetched prices. Invoices and PDFs are not changed by this.

The rates use the same definitions as Energy balance, so the figures match. A year without metering data shows a short notice instead.

If a metering point is marked Generation behind the meter (see Metering points), the participant who holds it shows — instead of a self-sufficiency rate, with a badge explaining why. Their consumption and production kWh are unaffected. A note under the key figures explains that, for those meters, "production" means only the surplus fed into the community and the rates describe energy exchanged at the connection point — not the plant's own self-consumption. The same — and note appear on that participant's annual statement PDF, on Energy balance, and on the participant's own dashboard.

Below the report, under Annual documents:

  • Tax Overview — download the ZEV's yearly tax overview for producers as a PDF.
  • Annual Statement — prepare a ZIP of the selected ZEV's annual statements for all participants. Download it when ready. You can return after reloading; links expire after 24 hours. Partial exports include an omitted.txt listing statements that could not be generated.

Reports page

Participants: Open Annual statement (/me/statement) to read the annual statement your community issued to you, or select the Tax Overview tab for the financial summary. The page shows the date it was issued; use Download PDF to save the document. Open in new tab shows the same PDF. The year list offers the years for which you have a document, and Tax Overview only appears if you have one (it is for producers). If your community has not issued anything yet, the page says so; it appears here and under My documents as soon as it does. Select Retry if loading fails. Issuing a statement again replaces the earlier one on this page (the earlier one stays under My documents, marked Superseded). The tax overview shows producers' net local-energy revenue and feed-in compensation. The statement and the tax overview count the same invoices as the annual report: those that have been approved and not cancelled, whether or not they are paid yet.

Participant annual documents with embedded statement

These documents use your consumption, invoices, and savings. They are issued by your community's operator, usually after the year's billing. The selected community appears above the page title.

Troubleshooting

No participants appear in the period overview

Causes:

  • No active participants with metering-point assignments overlapping the selected period.
  • The wrong ZEV is selected (check the community name above the page title).

Fix:

  1. Check the community name above the page title (click it to choose another).
  2. Verify that Participants exist and have metering-point assignments covering the period.

Invoice totals look wrong

  1. Verify tariff prices are correct for the period.
  2. Check metering data completeness — missing readings lead to under-counted energy.
  3. Review the billing allocation logic to understand how local vs. grid energy is split.
  4. If needed, fix the data and regenerate the invoice while it is still a draft.

Email not received by participant

  1. Check the participant's email address in Participants.
  2. Open Billing → Emails and View history to check delivery status and error messages.
  3. Click Retry on a failed latest attempt.
  4. Review Email Configuration for SMTP environment variable issues.

Best Practices

  • Check metering completeness before generating invoices — the Issues filter lists every participant with missing data, and each row names the affected meters and how many days are missing.
  • Approve after review — open the invoice detail page and check the embedded invoice document (line items and totals) before approving.
  • Generate PDFs before sending — while not strictly required, generating the PDF first lets you review the document before emailing.
  • Approve only when final — once approved, an invoice can no longer be regenerated. Correct data and tariffs while it is still a draft.

Next Steps

Legacy CSV timestamp repairs also flag invoices for review, including periods on either side of a Swiss date boundary. Their evidence identifies a CSV timestamp correction rather than an SDAT delivery or an import deletion.

The Data review notice initially lists the newest 20 corrections. Open the invoice detail and choose Show all to inspect a longer open history; Show newest 20 collapses it again. Period overview keeps the complete count while returning only the newest 20 evidence entries per invoice.