AnchorAnchor
Modules

Invoicing

Create, send, and track invoices in Anchor with VAT, credit notes, and payment matching for South African small businesses on the free hosted core.

The invoicing module handles your accounts receivable workflow.

Invoice Lifecycle

Draft → Sent → Partial/Paid
              → Overdue
              → Void
  1. Draft - Create and edit freely (open the invoice and click Edit)
  2. Sent - Invoice finalized, journal entry created (DR Accounts Receivable, CR Revenue)
  3. Partial - Some payment received
  4. Paid - Fully paid
  5. Overdue - Past due date and unpaid
  6. Void - Cancelled

Creating an Invoice

  1. Navigate to Sales > Invoices > New Invoice
  2. Select a contact (customer). Line tax defaults from that contact’s default tax rate (Contacts → Bookkeeping). Tax-exempt contacts get No tax. Changing tax on a line — including No tax — is kept if you later change the customer. New lines pick up the current customer’s default. The line Account fills from the customer’s income account (Contacts → Bookkeeping) and applies that account’s default tax (unless the customer is tax-exempt). An account you pick yourself, or a catalogue item’s income account, is kept if you change the customer. Lines left blank post to the income account on save.
  3. Currency fills from the customer. Change it to invoice in a different currency; that override is kept if you change customer.
  4. Set issue date and due date. The due date is filled from the customer's payment terms (or the organisation default) and follows the issue date until you pick one yourself
  5. Add line items. Optionally pick a catalogue item — stock fills description and sale price and will relieve quantity when you send; service fills description and price but does not change stock. Free-text lines with no item are still valid.
  6. Optionally add a reference (e.g. PO number) and notes
  7. Save as draft or send immediately

Editing a Draft

A sales invoice can be edited while it is still a draft (before it is sent or submitted for approval).

  1. Open Sales → Invoices and click the draft
  2. Click Edit
  3. Change the customer, dates, reference, notes, or line items
  4. Click Save Invoice

Sent, paid, overdue, void, and pending-approval invoices cannot be edited this way. Drafts created from a sales order also cannot replace lines (Edit is hidden). To fix a sent invoice, void it and create a new one, or use Edit on the document snapshot (sender/recipient details only).

Invoice numbers

By default, new invoices receive the next sequential number (INV-00001, INV-00002, …). Admins set prefix, hyphen vs none, digit width, and the next number under Settings → Document numbering (manage:accounts). Empty prefix is not offered.

The New Invoice screen does not type a number. API, import, and MCP create_invoice can pass invoiceNumber. Rules:

  • Must be unique among non-deleted invoices in the organization
  • When omitted, the next auto number from Settings is assigned (default INV-#####). TaxShopHub-style omit uses that org format, not a bare integer (4235)
  • Values matching the org format advance the sequence. Sage-style INP02401 matches when prefix is INP with no hyphen (next after INP02400 is INP02401)
  • Unprefixed 4234 is stored as custom and does not move the sequence (auto would be INV-04235 if you set next to 4235, not 4235)
  • Opening OPEN-* numbers (for example OPEN-SALC-500) are kept and ignored for the auto series
  • Duplicate live numbers return HTTP 409
  • If live invoices do not match the default format and numbering is not saved yet, omit-number create returns 409 until Settings is set

Example create body:

{
  "contactId": "…",
  "issueDate": "2026-07-18",
  "invoiceNumber": "INV-01000",
  "currencyCode": "ZAR",
  "lines": [{ "description": "Consulting", "quantity": 1, "unitPrice": 1500 }]
}

Currency

If currencyCode is omitted, Anchor uses the contact’s default currency, then the organisation base currency (e.g. ZAR for South African orgs). New contacts without a currency inherit the org base currency. The dashboard sends the filled code; MCP create_invoice omit remains USD until GAP-CUR-01.

Integrations that create draft invoices should send both invoiceNumber and currencyCode so drafts match the source sales invoice.

Line Items

Each line item includes:

FieldDescription
DescriptionWhat you're billing for
Catalogue itemOptional. Stock items relieve quantity on send; service items do not. Leave empty for ad-hoc text.
QuantityNumber of units (stored as qty x 100)
Unit PricePrice per unit in cents
AccountRevenue account to credit. Hidden when a catalogue item is selected (the item’s revenue account, or the contact/organisation default, is used).
Tax RateDefaults from the customer’s default tax rate (or No tax if tax-exempt / unset). Override per line.
AmountAuto-calculated: qty x price

On create and draft edit, omitting taxRateId on a line (REST or MCP) applies the contact default. Send taxRateId: null for explicit no tax — do not omit the key. TaxShopHub no-VAT extractions must send null or the draft inherits the contact’s rate. An explicit UUID always wins. Dashboard creates always send the key after client fill.

Credit note lines

Credit notes use the same line fields. Pick the catalogue item being credited so the credit reduces that item (and its inventory category) in Reports → Sales by category. The item only labels the line: it does not return stock. Stock comes back when you send a credit note linked to the original invoice, as before. When Account is hidden, the item’s revenue account is used, then the customer or organisation default.

Sending Invoices

When you click Send on a draft invoice, a dialog appears with:

  • To - Pre-filled with the contact's email address, editable
  • Subject - Pre-filled with the invoice number and your organization name
  • Message - Pre-filled template with contact name, amount due, and due date
  • Attach PDF - Checkbox to include the invoice as a PDF attachment (enabled by default)

You have two options:

  • Send Email - Sends the email to the recipient and marks the invoice as sent
  • Mark as Sent - Only changes the status without sending an email

Sending (email or mark-as-sent) posts the sales journal. Lines with a stock catalogue item also reduce quantity on hand and post cost of sales — except sales-order stock lines, which already left on a delivery note: those post DR COGS / CR GDNI and do not issue stock a second time. Service items and free-text lines do not move stock. Saving a draft does not post.

Direct invoices and cash sales do not need a sales order. They cannot take units another order has reserved (send/post fails if that would drop on-hand below reserved).

Outbound From address:

  • If Settings → Email has verified SMTP, the message is sent from your organisation’s From address
  • Otherwise Anchor uses the platform default sender (when configured), with Reply-To set from the organisation contact email when available

See Email to use your own domain.

Email History

After sending, an Email History section appears on the invoice detail page showing all emails sent for that invoice. Each entry shows the recipient, subject, status (sent/failed), and timestamp. You can Resend any previous email.

Email Limits

Email sending is subject to monthly limits based on your plan:

PlanEmails/month
Free25
Pro100
Storage add-onUp to 10,000

Deposit and retainer invoices

Tick This is a deposit / retainer invoice on a new invoice when you bill the customer before the work is done. It is a full tax invoice: VAT is due when you issue it or are paid, whichever comes first.

Sending it posts:

DebitCredit
Deposit invoiceAccounts Receivable (total)Customer Deposits (amount excl. VAT), Output VAT

The lines still need an income account (it is shown on the deduction later), but nothing is posted to it. Income is counted once, on the final invoice. The deposit invoice's page shows Deposit used: how much later invoices have deducted and what is left.

Deducting it on the final invoice. Create the final invoice for the full contract value. Once the customer is chosen, Deposits under Line Items lists their sent deposit invoices in that currency. Click Deduct a deposit and pick one: a line Less deposit — INV-00001 is added for what is left (you can lower the amount). It posts:

DebitCredit
Final invoiceAccounts Receivable (balance), Customer Deposits (deposit excl. VAT), Output VAT on the depositIncome account (full contract), Output VAT (full contract)

Example, 15 % VAT, contract R2 400 000 excl. VAT, 50 % deposit:

StepDebitCredit
Deposit INV-00001, R1 200 000AR 1 380 000Customer Deposits 1 200 000; Output VAT 180 000
Customer paysBank 1 380 000AR 1 380 000
Final INV-00002: R2 400 000 less deposit R1 200 000AR 1 380 000; Customer Deposits 1 200 000; Output VAT 180 000Income 2 400 000; Output VAT 360 000

Income is R2 400 000 once, Customer Deposits ends at nil, and Output VAT is R180 000 in each period.

Rules:

  • Only a sent deposit or retainer invoice of the same customer in the same currency can be deducted, and never more than is left. Draft invoices that deduct a deposit hold their amount until they are voided or deleted.
  • You can deduct a deposit that is not paid yet; the customer still owes the deposit invoice. The drawer shows what is still due.
  • A deposit invoice whose lines use different tax rates can't be deducted as one line.
  • Void the final invoice to release its deduction. A deposit invoice can't be voided while a sent invoice deducts it.
  • Duplicate and ARIA's "copy an earlier invoice" leave the deduction lines out.

How to check: run Reports → General Ledger for Customer Deposits (2410). Each deposit invoice credits it and each deduction debits it, so the balance is the deposits not yet used.

Deposit invoices sent before this change (October 2026) posted to the line's income account. They are not changed. If one is still open at a reporting date, move it with a manual journal: debit the income account, credit Customer Deposits, excl. VAT.

Use a deposit invoice when the customer needs a tax invoice for the deposit. Use Customer prepayments for money received without an invoice.

Recording Payments

From the invoice detail page, click Record Payment and enter:

  • Amount - Payment amount in cents
  • Date - Payment date

This creates a payment journal entry (DR Bank, CR Accounts Receivable) and updates the invoice balance.

Downloading PDFs

From the invoice detail page:

  • Download PDF — the tax invoice (GET /api/v1/invoices/{id}/pdf?format=pdf)
  • Download POD — proof of delivery of the same invoice: description and quantity, no prices or totals, title Proof of delivery, a Received by block, and “This is not a tax invoice.” (format=pdf&variant=pod). It does not post, change stock, or change quantity invoiced.
  • Print invoice and POD — one PDF, the tax invoice then the proof of delivery (format=pdf&variant=with-pod). Open that file to print. variant=with-pod is only valid with format=pdf.

From the customer payment page, click Download Invoice (the tax invoice only).

Via MCP: get_invoice_pdf. Omit variant for the tax invoice.

To customize how your PDFs look, see Templates.

Invoice Numbering

Invoices are auto-numbered from Settings → Document numbering. Default organisations stay INV-#####. Sage Pastel-style series use prefix INP, no hyphen, and a next number such as 2401 → INP02401. Unprefixed 4234 stays custom.

Quotes to Invoices

Accepted quotes can be converted directly to invoices, copying all line items — or converted to a sales order, not both. See Quotes and Sales Orders.

Invoices from a sales order

Create invoice on Sales → Orders opens a line picker and raises a draft tax invoice. Stock quantity is the delivered remainder (whole units); service and free-text quantity is the ordered remainder (up to two decimal places). Stock must be shipped on a delivery note (GDN) first. The draft does not count as invoiced until you send it. The invoice page shows From SO-#####. Sending posts VAT and COGS from GDNI (no second issue). A delivery note is not a tax invoice.

Customer Portal

Customers can view and pay invoices through a portal link. The portal shows invoice details, payment status, and provides a PDF download button. Portal links are secured with tokens and can be set to expire.

Signature requests

You can ask a customer to sign an invoice: they get an email with a link to a page where they review the invoice and sign it. Ask ARIA "Send INV-00045 to Jan Smit ([email protected]) for signature", or use the API below.

  • The email goes the way invoices are emailed: from your organisation's mailbox (Settings → Email) when it is verified, otherwise from Anchor's address with replies to your organisation. If it cannot be sent, nothing is requested.
  • A void invoice cannot be sent for signature. Asking again sends a new, separate request; a reminder goes to the latest request that is still waiting and has not expired.
  • Signing does not change the invoice or post anything.

API Reference

EndpointMethodDescription
/api/v1/invoicesGETList invoices
/api/v1/invoicesPOSTCreate invoice. Optional depositDeductions: [{ depositInvoiceId, amount }] (amount in cents excl. VAT; omit for all that is left)
/api/v1/invoices/{id}GETGet invoice details
/api/v1/invoices/{id}PATCHUpdate invoice. depositDeductions replaces the "Less deposit" lines; omit it to keep them
/api/v1/contacts/{id}/depositsGETThe customer's sent deposit / retainer invoices with left (cents, excl. VAT). Query currency, excludeInvoiceId
/api/v1/invoices/{id}/pdfGETInvoice HTML. variant=pod is proof-of-delivery HTML
/api/v1/invoices/{id}/pdf?format=pdfGETTax invoice PDF
/api/v1/invoices/{id}/pdf?format=pdf&variant=podGETProof of delivery PDF (not a tax invoice; does not post)
/api/v1/invoices/{id}/pdf?format=pdf&variant=with-podGETOne PDF: tax invoice, then proof of delivery
/api/v1/invoices/{id}/complianceGETCheck compliance warnings (a sent invoice is checked as sent)
/api/v1/invoices/{id}/signaturePOSTEmail a signature request (signerName, signerEmail, optional expiresAt)
/api/v1/invoices/{id}/signatureGETList the invoice's signature requests
/api/v1/invoices/{id}/signature/resendPOSTRemind the signer of the latest pending request

On this page