flow

Propose Customer Invoice — command lifecycle

One propose_invoice call end to end: queue → human approve → applier creates the QBO invoice from the approved lines.

Flow

Overview

The AR-side creation write. Second in the go-live order (after bill-date correction), once U6 idempotency (QBO RequestId keyed to the proposal id) ships — a created invoice is customer-visible, so retry-safety is a precondition.

The flow

How it works

  1. Max (agent) on claude.aiMCP tool call
  2. Propose Customer Invoicequeue only — no vendor write
  3. Approval Bus queues the proposalpending + widget token minted
  4. Proposal Createdapproval card renders
  5. Cleared human reviews the cardhuman click — approve
  6. Commit Approval (app-only)RBAC + atomic pending→approved claim
  7. Approval Bus claims + dispatchesexactly-once claim
  8. Proposal Approveddispatch by kind: invoice-generation
  9. InvoiceGenerationApplierone SalesItemLineDetail per approved line
  10. QBO Create Invoicethe one vendor write
  11. QuickBooks Onlineresult recorded on the proposal
  12. Mutation Appliedcard refreshes
  13. Terminal: proposal applied (a thrown apply records failed instead — Mutation Failed)