Skip to content

A sales pipeline wired to the accounting system and the proposal tool

Eight Make scenarios join a monday.com sales pipeline to QuickBooks Online and PandaDoc. A button adds the customer and job to accounting; estimates and invoices link themselves to the deal and roll up its value; a second button creates the proposal, and its status and signed PDF come back to the deal.

Billing & financeFlow2026

Where this applies

Contractors, installers and project businesses that sell from a CRM pipeline, quote and invoice in accounting software and send proposals for signature.

live scenarios around one pipeline
8
deal-value roll-ups, none failed
130
buttons: add to accounting, create proposal
2

The problem

Project businesses sell in a pipeline, quote and invoice in accounting software and send proposals from a third tool. A deal's real value is in its estimates and invoices, its customer details are in accounting, and its signed proposal is in someone's downloads. Reps re-key the same customer into each system, and the pipeline's value column is a guess.

Joining them by hand fails quietly: an invoice raised against the wrong customer never finds its deal, and a proposal created with a field missing goes out wrong. The joins need ids written in both directions, and the rep needs to be told what is missing rather than handed a half-filled document.

What we built

01

A button, then match before create

Staff press a button on the deal to add it to accounting. The scenario reads the deal and its details by GraphQL, searches accounting for the customer, and either reuses the match or creates the customer, then creates the job beneath it and writes both ids back to the deal. Matching first keeps one customer per client however many deals they have.

02

Ids written both ways

When an estimate or an invoice is created in accounting, a linker waits briefly, reads the document through accounting's API, finds the deal it belongs to, connects the document to the deal on the board and stamps the deal's id on the invoice in accounting. An invoice that matches no deal takes its own route and is not linked.

03

Deal value from the source of truth

A roll-up scenario listens for changes to linked estimates and invoices. A router sends each event type to its own route, where GraphQL reads the linked records, a code step does the arithmetic and a mutation writes the deal's value. For invoices it pauses first, then reads the totals from accounting itself, so the pipeline shows what was actually invoiced.

04

Proposals that will not go out half-filled

A second button creates the proposal. If required fields are missing, the scenario sets a status and posts an update on the deal saying what is missing. Otherwise it creates the document from a template prefilled from the deal, the customer and the rep, waits for it to render, downloads the PDF and files it on the deal. A webhook from the proposal tool brings status changes and the signed PDF back to the deal.

05

Small fields, filled once

One scenario fills the deal's project site address: it keeps one already set, geocodes a typed address, or takes the customer's address from accounting and geocodes that. Another stamps a readable deal id on every new deal. Each board webhook answers the board's challenge handshake on its first route, so every subscription verifies itself.

The outcome

  • All eight scenarios are switched on. Between 1 and 20 October 2026 the deal-value roll-up ran 130 times and the invoice linker 36 times, with no failures.

  • The add-to-accounting button ran 54 times between 26 September and 19 October: 35 succeeded, and its 16 errors and 3 warnings came mostly during the build and rollout.

  • Together the eight used 2,535 credits in the current billing period, 1,208 of them the roll-up.

Where it stops

The linkers and the roll-up rely on deals and accounting records joined through the button, and an invoice that matches no deal is left unlinked. Calls to accounting carry ignore handlers, so a failed read or stamp is skipped without an alert. The pauses before reading an invoice and before downloading a proposal are fixed waits, not checks. The flow is a few weeks old, so its history is short.

Built with

  • Make.com
  • monday.com
  • GraphQL API
  • QuickBooks Online
  • PandaDoc
  • OpenStreetMap geocoding
  • Code module

Patterns used

  • Button as trigger
  • Match before create
  • Ids written both ways
  • Roll-up in a code step

Page copy drafted with AI assistance. Skofi is accountable for it. Editorial policy

Start here

Have something shaped like this?

If any part of the above resembles a problem you are living with, a short call is the fastest way to find out whether it is the same problem underneath.

Book a 15-minute callsaveez@skofi.tech

What happens on the call

  • 15 minutes, no deck
  • We map the process on the call
  • A written scope, or an honest no
Book a call