Deucalion Docs
How-to guideA task-oriented guide for completing a specific goal.
adminfinancebilling-candidatesinvoicesaccounting

Using Billing Candidates and Accounting Export Availability

Review accepted CRM-linked non-PPM quotes, including remedial and ad hoc work, alongside CRM-linked completed work orders; prevent duplicate invoice drafts; and understand current accounting export availability.

Before you start

  • Finance is enabled for the workspace.
  • Accepted non-PPM quotes or completed work orders are linked to CRM accounts.
  • Billing contacts, PO rules, and credit-hold state are reviewed on the account.

Expected outcome

Ready-to-invoice work is reviewed without duplicate quote or work-order billing, and accounting payloads are not mistaken for a shipped integration.

Open the ready-to-invoice queue

  1. Open Finance.
  2. Switch to Ready to Invoice.
  3. Filter by source or customer when the queue is large.
  4. Review quote candidates and work-order candidates separately.

Candidates appear when:

  1. A non-PPM quote, including a remedial or ad hoc quote, is accepted, linked to a CRM account, and not already covered by an invoice that is still eligible to suppress the source.
  2. A work order is completed, linked to a CRM account, and not already covered by an invoice that is still eligible to suppress the source.

[!WARNING] Open the quote before invoicing and confirm it has not been voided. Candidate generation currently checks accepted status but can retain a quote whose separate void metadata is set. Do not create an invoice from that row.

PPM quotes and service contracts do not currently appear as candidates. Finance waits for a supported billable occurrence rather than treating the contract itself as an invoice-ready item.

Review each candidate before invoicing

  1. Open the source quote, work order, or customer account from the candidate row.
  2. Check the customer account and billing contact.
  3. Check credit hold and PO-required badges.
  4. Check subtotal, VAT, and total.
  5. Check candidate age so older accepted or completed work is not missed.
  6. Create the invoice only when the source is ready to bill.

A candidate can show Needs amount when the source total is zero or incomplete. Review the commercial evidence, then use Create Invoice and enter the subtotal and VAT deliberately in the invoice draft. The accepted quote or completed work order remains unchanged.

Create an invoice draft from a candidate

  1. Select Create Invoice on the candidate.
  2. Confirm the source is quote or work_order.
  3. Set the due date if needed.
  4. Review subtotal and VAT rate.
  5. Confirm billing email, billing address, payment terms, PO number, external reference, and notes.
  6. Acknowledge credit-hold or missing-PO warnings when they apply.
  7. Create the invoice.

The dialog preserves deliberate zero values. Blank values are omitted or cleared according to the linked candidate and account defaults.

Avoid duplicate invoices

Finance matches each candidate to its source record. Invoices for the same source hide it from the candidate queue unless their state is void or written off. Those two states do not suppress the source, so an otherwise eligible quote or work order can reappear for deliberate rebilling. A paid invoice continues to suppress its source.

An accepted quote and its related completed work order can both appear before either has an invoice. Once an invoice covers the quote or any work order related through that quote, Finance suppresses both sides unless that invoice is void or written off. Review the source before choosing which commercial event should become the invoice.

Understand the accounting serializer boundary

The codebase can serialize a loaded CRM invoice into a deterministic, provider-neutral payload for a future accounting adapter. The current Finance UI does not expose an export or sync action, so do not promise that an admin can send this payload to an accounting provider.

The serializer payload includes:

  1. Invoice identity, organization, account, invoice number, status, source, and deterministic idempotency key.
  2. Issue and due dates.
  3. Currency, subtotal, VAT rate, VAT amount, total, PO number, and external reference.
  4. Customer billing email and billing address.
  5. Optional contact identity, email, and phone.
  6. Line items from quote line items where available, or a fallback invoice line.
  7. Sync state for provider, external ID, synced time, and last error code.

The payload contains customer billing details and must not be logged in full. Internal invoice notes are not part of the serializer contract.

Troubleshooting

ProblemWhat to check
An accepted quote is missing from candidatesConfirm it has a CRM account and no invoice other than a voided or written-off one covers the quote or a work order related through it.
A completed work order is missingConfirm it is completed and account-linked, and that no invoice other than a voided or written-off one covers the work order or its source quote.
A candidate says Needs amountReview the source evidence, select Create Invoice, and enter the invoice subtotal and VAT deliberately. Do not edit the accepted quote or completed work order to supply the amount.
A PPM contract is absentThis is current behavior until a canonical recurring billing occurrence exists.
You cannot find accounting exportThere is no current user-facing export or provider-sync action. The serializer is an internal contract for a future adapter.
  1. Use Finance, Receivables, and Billing for candidate review, invoices, and payment state.
  2. Use Quoting a PPM Contract and Creating Routines for accepted PPM quotes and the routine-planning handoff.
  3. Use Customers, Quotes, Work Orders, and Finance to trace and correct source records.
  4. Follow the source links in Finance to confirm which accepted quote or completed work order produced a billing candidate before correcting it.

On this page