QuickBooks
Create a project
Creates a project in QuickBooks for an existing customer. Intuit's API offers Projects only to Intuit partners; this endpoint works on any QuickBooks account connected to Clickr.
- Uses 1 run: 100 a day on Standard, 500 on Velocity, reset at midnight UTC.
- On Standard, 1 call every 30 seconds across the Projects endpoints.
- Also served at
/integrations/quickbooks/projects, for older integrations. - For assistants, the MCP tool create_quickbooks_project.
Request
curl -X POST https://api.clickr.cloud/v2/integrations/quickbooks/projects \
-H "Authorization: Bearer $CLICKR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"projectName": "Henderson Residence Addition",
"customerName": "Mark Henderson",
"projectCode": "J-2041",
"startDate": "11/10/2026",
"status": "in-progress",
"statusCallbackUrl": "https://example.com/clickr/runs",
"metaData": {
"jobNumber": "2041"
}
}'const response = await fetch(`https://api.clickr.cloud/v2/integrations/quickbooks/projects`, {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.CLICKR_API_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
"projectName": "Henderson Residence Addition",
"customerName": "Mark Henderson",
"projectCode": "J-2041",
"startDate": "11/10/2026",
"status": "in-progress",
"statusCallbackUrl": "https://example.com/clickr/runs",
"metaData": {
"jobNumber": "2041"
}
}),
});
const data = await response.json();import os
import requests
response = requests.post(
"https://api.clickr.cloud/v2/integrations/quickbooks/projects",
headers={"Authorization": f"Bearer {os.environ['CLICKR_API_KEY']}"},
json={
"projectName": "Henderson Residence Addition",
"customerName": "Mark Henderson",
"projectCode": "J-2041",
"startDate": "11/10/2026",
"status": "in-progress",
"statusCallbackUrl": "https://example.com/clickr/runs",
"metaData": {
"jobNumber": "2041"
}
},
)
data = response.json()Response
{
"receipt": "6729c1f04b7e3d0012a91e07"
}The call returns at once with a receipt. The project is created by a run, which usually finishes in 3 to 5 minutes: check it with Get a run, or pass a statusCallbackUrl.
Body
JSON, with Content-Type: application/json.
projectNamestringRequiredThe new project's name.
customerNamestringRequiredThe QuickBooks customer the project belongs to.
projectCodestringThe Project ID field on the QuickBooks project form: your own reference, such as a job number. Not the projectId QuickBooks assigns. Ignored if the form has no Project ID field.
startDatestringStart date, as MM/DD/YYYY.
endDatestringEnd date, as MM/DD/YYYY.
statusstringThe project's status. Both spellings of cancelled are accepted.
One of not-started, in-progress, completed, canceled, cancelled
notesstringThe project's notes.
billingAddressobjectThe project's billing address.
countrystringRequiredCountry.
streetAddress1stringRequiredFirst line of the street address.
streetAddress2stringSecond line of the street address.
citystringRequiredCity.
statestringRequiredState or region.
zipCodestringRequiredZIP or postal code.
shippingAddressobjectThe project's shipping address.
countrystringRequiredCountry.
streetAddress1stringRequiredFirst line of the street address.
streetAddress2stringSecond line of the street address.
citystringRequiredCity.
statestringRequiredState or region.
zipCodestringRequiredZIP or postal code.
customFieldsarray of objectsCustom fields to fill on the project form.
labelstringRequiredThe custom field's name, as it appears on the project form.
valuestringRequiredThe value to set.
fieldTypestringRequiredWhether the field is free text or a dropdown in QuickBooks.
One of text, dropdown
statusCallbackUrlstringA URL Clickr POSTs the run's result to when it finishes, as JSON with your metaData. Sent once, with a 30-second timeout.
metaDataobjectAny JSON object of your own, such as your id for the job. Sent back with the result to statusCallbackUrl.
Response
200, as JSON, once the run is queued. What the run did comes from Get a run, or is POSTed to your statusCallbackUrl.
receiptstringThe id of the run this call started. Pass it to Get a run.
Errors
JSON with an error and, on most, a message saying what to change. All errors
| Status | Error | When |
|---|---|---|
| 500 | Failed to create project | The body is missing projectName or customerName, or a field is in the wrong format. The message says which. |
| 401 | No API Key provided | The Authorization header is missing. |
| 401 | No account found for api key provided | The key isn't recognised: mistyped, revoked, or held by someone who has left the account. |
| 401 | No integration found for account | The account has no connector connected yet. |
| 401 | This integration is still pending setup… | QuickBooks isn't fully set up in Clickr: its sign-in or two-factor setup is unfinished. The error says what to do. |
| 403 | Forbidden | Your access on the account doesn't include this action. |
| 403 | Daily cap exceeded | The account has used its runs for the day: 100 on Standard, 500 on Velocity. They reset at midnight UTC. |
| 403 | Rate limit exceeded | A second call within 30 seconds on Standard. Velocity has no wait. |