# Turn signed Joist estimates into invoices

> Your agent spots Joist estimates with a client signature, generates the invoice from each one and emails it after your OK, without double invoicing.

Source: https://cotlet.dev/integrations/joist-api-mcp-server/convert-estimates-to-invoices

Clients sign estimates from their phone at night or over the weekend. Monday morning you scroll the Joist estimates list for the pen icon, then generate and email each invoice before the crew shows up.

Cotlet does it in your own Joist account with list\_estimates, get\_document, list\_invoices, convert\_estimate\_to\_invoice and send\_document, called by your AI agent, an n8n workflow or a script.

[Request access](https://cotlet.dev/app/signup?app=joist) [All Joist tools](https://cotlet.dev/integrations/joist-api-mcp-server)

Hosted · nothing to install or maintain

Official options

## Can Joist do this on its own?

Joist has no API for estimates or invoices (checked 12 Oct 2026). Joist does have Auto-generate Invoice: turned on per estimate in its Online Payments section, it creates the invoice right after the client approves and emails it with an option to pay through Joist Payments. It emails only the address saved on the estimate and sends nothing by email for an estimate that went out by SMS. Estimates without it are converted with Generate Invoice, one per click, and Client Signs Document alerts are Joist Pro push notifications that do not appear in the web app.

By hand

## How you do it in Joist today

1. Open the Estimates list and look for the pen in hand icon, which Joist shows once the client signs; the opened envelope icon only means they opened the email.
2. Open the signed estimate and click Generate Invoice at the top of the screen on the web (Invoice on iPhone, the green circle then Invoice on Android).
3. Check the new invoice, which Joist fills with every detail from the estimate, and edit it if the scope changed.
4. Click Email, check the To field, subject and body, and click Send.
5. Joist Auto-generate Invoice skips these clicks only on estimates where it was turned on in the Online Payments section of the estimate; every other signed estimate waits for Generate Invoice.
6. Signature alerts are phone push notifications on Joist Pro only, so a signature from Saturday can sit unnoticed until someone opens the list on a computer.

With an agent

## How to turn signed Joist estimates into invoices

Prompt

```
Every morning, find the Joist estimates clients signed since yesterday, turn each into an invoice and email it to the client.
```

1. 01  
### Pick only real signatures  
The agent reads list\_estimates and keeps estimates that carry the signed marker. An Approved status alone proves nothing, because Joist also sets it on conversion and when you change the status by hand. Opened but unsigned estimates are only listed.
2. 02  
### Read what the client signed  
get\_document shows the line items, tax and Deposit Due of each signed estimate. If you told the agent the scope changed for a job, or the total differs from what you expected, it stops on that estimate and asks before converting.
3. 03  
### Convert once, never twice  
Before converting, the agent searches list\_invoices for the client. An invoice with the same total means the estimate was already invoiced, by an earlier run or by Joist Auto-generate Invoice, so it is skipped. Otherwise convert\_estimate\_to\_invoice creates the invoice, and each new invoice number is matched back to its estimate in the report.
4. 04  
### Send or hold  
send\_document emails each invoice to the address on the client card and waits for your OK by default. A client card without an email is reported with the invoice number, so you can text the link from the Joist app yourself.

### What you get back

Example data

```
4 signed estimates found, 2 already invoiced earlier (skipped)
Estimate #318 Dana Lee, $757.75 -> Invoice #1051, Deposit Due $378.88, emailed to dana@example.com
Estimate #322 Henderson family, $4,180.00 -> Invoice #1052, not sent: no email on the client card
Opened, not signed: #320 Priya Nair, $2,160.00, expires in 3 days
```

### Other ways to ask

- Every weekday at 7 am, invoice any Joist estimate signed since yesterday, but do not send anything until I look.
- Dana approved the Maple Street estimate by phone. Convert it even though it is not signed and email the invoice.
- List the estimates clients opened in the last two weeks but never signed, with their totals and expiry dates.

Before you automate it

## What Joist allows, and what to know first

- Converting in Joist changes the estimate status from pending to approved and keeps the original in the Estimates section; a deleted Joist estimate cannot be recovered.
- Joist also lets you approve an estimate yourself by changing its status from Pending to Approved, so an Approved estimate is not proof of a client signature.
- An invoice made by Joist Auto-generate Invoice shows ISSUED once it was emailed to the client and DRAFT when it was not sent.
- Joist clients sign by clicking Sign on the emailed document and typing their name, while signing on your own screen works only in the Joist mobile app.

send\_document asks for your OK by default. To run it daily without you, switch confirmation off for that tool in your dashboard.

Sources: [Joist Help Center: convert an estimate to an invoice](https://support.joistapp.com/en/articles/9212961-how-do-i-convert-an-estimate-to-an-invoice) · [Joist Help Center: know if a client viewed or signed](https://support.joistapp.com/en/articles/9212960-how-do-i-know-if-my-client-viewed-or-signed-my-estimate-or-invoice) · [Joist Help Center: how a client signs an estimate or invoice](https://support.joistapp.com/en/articles/9212953-how-do-i-or-my-client-sign-an-estimate-or-invoice) · [Joist Help Center: automatically generate an invoice from an approved estimate](https://support.joistapp.com/en/articles/9212811-how-do-i-automatically-generate-an-invoice-from-an-approved-estimate) · [Joist Help Center: what happens to my estimate when I convert it](https://support.joistapp.com/en/articles/9213004-what-happens-to-my-estimate-when-i-convert-to-an-invoice)

REST

## Call convert\_estimate\_to\_invoice from a script

curl

```
curl https://cotlet.dev/api/v1/joist/convert_estimate_to_invoice \
  -H "Authorization: Bearer $COTLET_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"estimate_id":"est_20418"}'
```

Example response

```
{
"invoice_id": "inv_58300",
"number": "1051",
"from_estimate": "est_20418",
"total": 700,
"deposit_due": 350,
"sent": false,
"estimate_status": "approved"
}
```

MCP: add https://cotlet.dev/mcp/v1 with the same key; the tool is joist\_convert\_estimate\_to\_invoice. Example data.

[Schedule it in n8n, Make, Zapier or cron](https://cotlet.dev/integrations/joist-api-mcp-server#automations)

Tools

## Joist tools this automation uses

__Cotlet Joist tools used to turn signed Joist estimates into invoices__
| Tool | Parameters |
| ------------------------------ | ---------------------------------- |
| list\_estimates | search, limit, cursor |
| get\_document | document\_id |
| list\_invoices | view, search, limit, cursor |
| convert\_estimate\_to\_invoice | estimate\_id |
| send\_document | document\_id, to, subject, message |

[All 13 Joist tools with descriptions](https://cotlet.dev/integrations/joist-api-mcp-server#tools)

## More Joist automations

- [Create Joist estimates from a job description](https://cotlet.dev/integrations/joist-api-mcp-server/create-estimates-from-job-description)
- [Record check and cash payments on Joist invoices](https://cotlet.dev/integrations/joist-api-mcp-server/record-payments-on-invoices)
- [Follow up on unpaid and overdue Joist invoices](https://cotlet.dev/integrations/joist-api-mcp-server/follow-up-unpaid-invoices)
- [Joist API and MCP server: every tool](https://cotlet.dev/integrations/joist-api-mcp-server)
- [All use cases](https://cotlet.dev/use-cases)

## Give your agent access to Joist.

Free 7-day trial with 5,000 credits, no card needed. Cotlet is independent and not affiliated with Joist.

[Request access](https://cotlet.dev/app/signup?app=joist)
