Skip to main content
QuickBooks

QuickBooks Estimate to Invoice

The API
QuickBooks
didn't build.

Every approved estimate still requires a manual click in QuickBooks to become an invoice. There's no API for it. Clickr wraps that exact action into a single REST call. Send a txnId, get a converted invoice back.

Connect QuickBooks

Need full project management? See QuickBooks Projects API →

POST /v2/integrations/quickbooks/estimates/convert-to-invoice

Live

// Request

-H "Authorization: Bearer ***"

{

"txnId": "EST-1042",

"statusCallbackUrl": "https://your-app.com/webhooks/...",

"metaData": { "jobId": "job_8f3a2b" }

}

// Response · 298ms

200 OK

{

"invoiceId": "INV-2891",

"status": "converted",

"estimateId": "EST-1042"

}

QuickBooks Estimates

Quote approved.
Now what?

A QuickBooks Estimate is a formal quote sent to a customer before work begins. Once they approve it, QuickBooks requires a manual step - opening the estimate and clicking "Convert to Invoice" - before you can collect payment.

That single click is a bottleneck in any workflow handling volume. Clickr exposes it as a REST endpoint so your system can fire it the moment approval lands - no browser, no manual intervention.

Estimate created

Quote sent to customer

Customer approves

Verbal, email, or signed

Convert to Invoice

Clickr handles this step via API

API

Invoice sent

Ready to collect payment

Progress Invoicing

Bill in stages,
not all at once.

If QuickBooks progress invoicing is enabled on your account, you can bill a portion of an estimate rather than the full amount. Three modes - choose one per request. percentage and amount are mutually exclusive. lineItems cannot be combined with either.

01

Default

Full invoice

Omit percentage, amount, and lineItems. The entire remaining estimate balance is invoiced. This is the default behaviour when none of the three fields are provided.

{
  "txnId": "42"
}

02

Progress invoicing

Percentage or amount

Pass percentage to bill by proportion, or amount for a fixed currency value. Useful for deposit or milestone invoices. These two fields are mutually exclusive.

{
  "txnId": "42",
  "percentage": "50",
  "invoiceDate": "05/20/2026",
  "dueDate": "06/19/2026",
  "noteToCustomer": "50% deposit"
}

03

Progress invoicing

Per-line control

Provide lineItems with a due field on each row. Each line can specify its own percentage or fixed amount independently. Cannot be combined with percentage or amount.

{
  "txnId": "42",
  "lineItems": [
    {
     "due": { "value": "50", "unit": "percent" }
    },
  ]
}

Additional fields available on any mode: invoiceNumber, invoiceDate, dueDate, noteToCustomer, memoOnStatement.

Full API reference

Claude Code & AI agents

Give your Claude
agent access
to QuickBooks.

Every Clickr endpoint is a standard REST call - trivial to wrap as a Claude tool, an MCP server, or an n8n AI node. Your agent can convert estimates on approval, create invoices from emails, and query billing data without touching a browser.

Agent converts estimate to invoice when a job is marked approved in your CRM

Claude creates invoices from incoming email or Slack approval messages

Pull open estimates to answer billing questions from your team

Chain with QuickBooks Webhooks to react to invoice status changes

Claude agent · quickbooks tool enabled

User

Job approved. Convert estimate EST-1042 for Riverside Corp to an invoice.

Tool call

get_transaction_id_from_quickbooks({ "estimateId": "EST-1042" })

Tool call

convert_estimate_to_invoice({ "txnId": "2932" })

Result

{ "invoiceId": "INV-2891", "status": "converted" }

Claude

Done. Estimate EST-1042 has been converted to invoice INV-2891 and is ready to send.

How it works

Not magic.
Browser automation.

01

Your code calls our API

POST to our endpoint with an estimate ID. From curl, Zapier, n8n, your app, or a Claude agent - anywhere that speaks HTTP.

POST /v2/.../estimates/convert-to-invoice

02

We handle QuickBooks

Clickr logs into QuickBooks as you, opens the estimate, and clicks Convert to Invoice. MFA? We handle that natively.

298ms average response time

03

You get the result

A clean JSON response comes back with the new invoice ID confirming the conversion. Your workflow continues automatically.

{ "status": "converted", "invoiceId": "..." }

Connect to 1000s of apps

Works with Make, n8n, Zapier, Claude Code, or any tool that can make an HTTP request.

HubSpot
Slack
Google Sheets
Salesforce
Monday.com

Custom

HubSpot
Slack
Google Sheets
Salesforce
Monday.com

Custom

HubSpot
Slack
Google Sheets
Salesforce
Monday.com

Custom

HubSpot
Slack
Google Sheets
Salesforce
Monday.com

Custom

How does Clickr convert estimates to invoices through API?

Behind the scenes, Clickr is a browser automation tool that mimics the manual process of converting estimates to invoices in QuickBooks, breaking each step down into precise actions. When triggered via API, Clickr re-executes these steps, ensuring consistent and accurate invoice creation.

To make automation even more accessible, Clickr has been wrapped into popular tools like Zapier and n8n, allowing no-code users to trigger invoice conversions effortlessly. For developers and advanced users, the underlying API remains fully accessible through custom applications, Postman, Claude Code, or direct API calls.

1. Create Your Clickr Integration

To get started, go to your Clickr Dashboard and click the add integration button.

Clickr Dashboard → ⚡ Add Integration → Enter QuickBooks CredentialsStep 1 - Create Integration

2. Setup Multi-Factor Authentication

Clickr will provide you with a unique phone number that you'll use to link your QuickBooks account.

QuickBooks → User Profile → Manage Your Intuit Account → Sign-in & SecurityStep 2 - Multi-Factor Authentication

Convert your first estimate to an invoice

Now that your integration is complete, you can start converting estimates. Use this cURL command to convert an estimate to an invoice. Be sure to use an estimate ID that exists in your QuickBooks account.

curl -X POST "https://api.clickr.cloud/v2/integrations/quickbooks/estimates/convert-to-invoice" \
  -H "Authorization: Bearer YOUR_TOKEN_HERE" \
  -H "Content-Type: application/json" \
  -d '{
    "txnId": "EST-1042",
    "statusCallbackUrl": "https://your-app.com/webhooks/invoice-created",
    "metaData": { "jobId": "job_8f3a2b" }
  }'

Invoice a percentage or fixed amount

If QuickBooks progress invoicing is enabled, pass percentage to bill a proportion of the estimate, or amount for a fixed currency value. These two fields are mutually exclusive - do not provide both in the same request.

curl -X POST "https://api.clickr.cloud/v2/integrations/quickbooks/estimates/convert-to-invoice" \
  -H "Authorization: Bearer YOUR_TOKEN_HERE" \
  -H "Content-Type: application/json" \
  -d '{
    "txnId": "42",
    "percentage": "50",
    "invoiceDate": "05/20/2026",
    "dueDate": "06/19/2026",
    "noteToCustomer": "50% deposit - thank you!"
  }'

To bill a fixed amount instead, replace percentage with amount:

curl -X POST "https://api.clickr.cloud/v2/integrations/quickbooks/estimates/convert-to-invoice" \
  -H "Authorization: Bearer YOUR_TOKEN_HERE" \
  -H "Content-Type: application/json" \
  -d '{
    "txnId": "42",
    "amount": "1200.00",
    "invoiceDate": "05/20/2026",
    "invoiceNumber": "INV-2026-001"
  }'

Invoice per line item

For per-line control, provide a lineItems array with a due field on each entry. Each line can specify its own percentage or fixed amount independently. This cannot be combined with percentage or amount.

curl -X POST "https://api.clickr.cloud/v2/integrations/quickbooks/estimates/convert-to-invoice" \
  -H "Authorization: Bearer YOUR_TOKEN_HERE" \
  -H "Content-Type: application/json" \
  -d '{
    "txnId": "42",
    "lineItems": [
      {
        "description": "Initial deposit",
        "due": { "value": "50", "unit": "percent" }
      },
      {
        "due": { "value": "1200.00", "unit": "amount" }
      }
    ]
  }'

Ready to automate QuickBooks invoicing?

Convert estimates to invoices and create invoices programmatically.

Start free trial
Talk to us about your app