Credit Notes
What it is
Every credit note raised against an invoice, in one list, with the total credit issued for whatever
you have filtered to. This is the screen the old SOA-side credit-note hub was folded into on
2026-06-18 — /soa/credit-notes now just redirects here.
Who can open it
Needs the finance.invoices feature grant while FEATURE_GRANULAR_RBAC is on; the owner
bypasses it. With the flag off, any signed-in account can reach it by URL.
Before you start
There are two different ways to unwind a credit note, and they are not the same thing.
- Cancel, on the credit note's own screen, is the reversal. It marks the note
cancelledand the receivable comes back on the invoice — the record of what happened stays. - Delete Selected, on this list, removes the rows outright. The receivable also comes back, but there is no longer any trace that a credit was ever issued.
Use Cancel unless you are cleaning up something that should never have existed. The delete prompt says as much: "Permanently delete N credit note(s)? This restores the receivable on any linked invoice and cannot be undone."
The headline card sums the filtered credit notes as plain numbers and formats the result as US Dollars. With INR and USD credit notes in the same filter, that figure is not money in any currency. The per-row Amount column is correct — each row is formatted in its own currency.
The list follows the entity switcher, and it is paged. The counts and totals describe the current filter, not the whole database.
Every control on the page
Header:
| Control | What it does |
|---|---|
| Tally XML | Downloads Tally_CreditNotes_<date>.xml for every credit note matching the current filter, not just the page you can see, and not just the ones you ticked |
| + New Credit Note | Goes to New Credit Note |
Cards and filters:
| Control | What it does |
|---|---|
| Search | CN #, client, or invoice…. Filters on the server, so it searches every page |
| Status buttons | All, draft, issued, cancelled |
| Delete Selected | Appears once rows are ticked. Deletes the ticked rows on this page |
The table — tick box, Client / Entity, CN #, Invoice Ref, Date, Amount, Status, and Open.
Paging is ‹ Prev / Next › at the foot. An out-of-range ?page= renders the last real page
rather than erroring.
⚠️ Delete Selected only ever acts on the rows selected on the current page, even though the header tick box and the Tally export both operate on the whole filtered set. Read the number in the prompt.
What it writes
The list writes nothing by itself.
- Delete Selected posts to
/api/credit-notes/bulk-delete. The rows go, and the receivable returns to any linked invoice. - Tally XML posts the matching ids to
/api/credit-notes/export/tallyand downloads the file. It is a read. - Open goes to the credit note, where Issue and Cancel live. Cancel is the reversal that keeps the record.
When it goes wrong
"No credit notes to export". The current filter matches nothing, so there is nothing to put in the file. Widen the status filter or clear the search.
"Export failed: …" The server's own message. The commonest cause is a filter matching more rows than the export can build in one go.
"Delete failed: …" Nothing was deleted; the message is the API's.
A credit you expected is missing. Check the entity switcher, then the status filter — it does not
open on All, so a draft or cancelled note can be hidden by whichever status you last chose.
The total looks wrong. See the warning above — the headline sums across currencies.
Related screens
- New Credit Note — raising one.
- SOA — where credit notes appear on a client statement.
- Invoices — the invoice a credit note is raised against.
- Tally Batch Export — the other side of the Tally handover.